mockito测试验证0次调用

时间:2016-11-23 19:08:06

标签: unit-testing mockito

    Class MyClass{
    method3(){
      if(condition){
        method1()
      }

      else{

      method2()

      }

    }

     method1(){
     //do woo
      }

     method3(){
        //do foo
      }
 }

我只是在调用case时尝试测试method3,所以不调用else方法。

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

但是这会调用我的method2并在method2内抛出空指针。如何在不调用method2的情况下对此进行测试,因为我的行为不会调用method2

1 个答案:

答案 0 :(得分: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);