我一直在使用JUnit和Mockito來試圖測試一個特定的網絡模塊如何影響它的輸入和輸出流。爲了便於測試,我創建了一組模擬網絡對象流(即ObjectInputStream的實例和ObjectOutputStream的實例),並以類似於以下代碼片段的方式將我想要測試的方法刪除:在Mockito中剔除返回null的函數
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());
}
}
然而,當我嘗試編譯並運行這段代碼,我得到了行「的時候(mockClientIn.readObject())thenReturn。(」從服務器發送「)一個空指針異常;」。我相信這是由於「readObject()」函數在存根對象上調用時返回空指針這一事實造成的,但我不知道是否有可能繞過此行爲。
是否有任何方式使用Mockito存根(或類似的空返回函數)?在此先感謝您的幫助。
這就是Mockito的工作原理,這就是您指定行爲的方式。什麼是特定的堆棧跟蹤? – 2013-02-13 21:41:43