[英]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.