2016-11-23 97 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