[英]Stubbing Out a Null-Returning Function in Mockito
我一直在使用JUnit和Mockito来测试特定的网络模块如何影响其输入和输出流。 为了方便测试,我创建了一组模拟网络对象流(即ObjectInputStream的实例和ObjectOutputStream的实例),并以类似于以下代码段的方式列出了要测试的方法:
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import static org.mockito.Mockito.*;
import org.junit.Test;
public class NetworkTester
{
@Test
public void ModuleRespondsToServerRequest() throws Exception
{
ObjectInputStream mockClientIn = mock(ObjectInputStream.class);
ObjectOutputStream mockClientOut = mock(ObjectOutputStream.class);
when(mockClientIn.readObject()).thenReturn("Sent from Server");
// Initialize module and connect it to the network...
verify(mockClientOut, timeout(100).atLeastOnce()).writeObject(isNotNull());
}
}
但是,当我尝试编译并运行此代码时,在“ when(mockClientIn.readObject())。thenReturn(“从服务器发送”);“行处得到空指针异常。 我相信这是由于以下事实引起的:当在存根对象上调用“ readObject()”函数时,它会返回空指针,但是我不知道是否有可能绕过此行为。
有什么方法可以使用Mockito存根该函数(或类似的null返回函数)? 在此先感谢您的帮助。
Mockito无法模拟readObject()
因为它是最终的。 您可以尝试使用PowerMockito或考虑重新设计代码以简化可测试性。 在此处查看有关该主题的讨论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.