我一直在使用 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("Sent from Server");”行得到一个空指针异常。我相信这是由于“readObject()”函数在存根对象上调用时返回一个空指针,但我不知道是否可以绕过这种行为。
有没有办法使用 Mockito 存根这个函数(或类似的 null 返回函数)?在此先感谢您的帮助。