2016-11-23 100 views
1
Class MyClass{ 
    method3(){ 
     if(condition){ 
     method1() 
     } 

     else{ 

     method2() 

     } 

    } 

    method1(){ 
    //do woo 
     } 

    method3(){ 
     //do foo 
     } 
} 

我試圖測試method3只有情況下被調用所以其他方法不被調用。mockito測試驗證與0調用

MyClass myClassMock= mock(MyClass.class); 
     myClassMock.method3(); 
     verify(myClassMock, times(0)).method2(); 

但後來這個叫我method2並拋出空指針內部method2。我如何測試這個,而不致電method2,因爲我的行爲不會打電話method2

+0

一旦我解決了編譯問題,這個測試代碼片段對我來說工作得很好。你可以加入[mcve]嗎? – Mureinik

回答

1

如果你不關心什麼是從method2返回您可以模擬方法以及:

when(mock.method2(anyString())).thenAnswer("anything"); 

可以更換anyString並使用以下:

when(mock.method2(any(MyClass.class))).thenReturn(anInstanceOfMyClass); 

verify(mock, never()).method2(); 

when(mock.method2()).thenReturn(instanceOfProperClass); 
+0

但是,這然後調用method2()。我不想要方法2被調用。內部方法2我打電話給第三方接口和調用去那裏和空指針失敗。 – javascriptlearner

+0

它是否需要任何參數?使用兩種第一種方法之一。 – xenteros

+0

@javascriptlearner或最後一個。 – xenteros