当前位置: 首页 > 知识库问答 >
问题:

mockito测试验证0个调用

滕英奕
2023-03-14
    Class MyClass{
    method3(){
      if(condition){
        method1()
      }

      else{

      method2()

      }

    }

     method1(){
     //do woo
      }

     method3(){
        //do foo
      }
 }

我正在尝试测试method3,只有在调用case的情况下,否则不会调用该方法。

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

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

共有1个答案

乐钱青
2023-03-14

如果您不关心从method 2返回的内容,您也可以模拟该方法

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

您可以替换任何字符串,并使用以下命令:

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

或者

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

或者

when(mock.method2()).thenReturn(instanceOfProperClass);
 类似资料:
  • 我试图验证一个模拟的方法()被调用了2次。不管出于什么原因,Mockito从来没有失败过测试,不管期望调用的次数是多少。我是这样使用它的:

  • 玩弄Mockito来实现我的服务的单元测试,但由于某种原因,我无法通过我的厚脑袋来实现这一点。我的考试通过了,但我不能确信我做得对。 下面是一个测试count()方法的示例。该方法只是将调用转发到它的存储库,我不想验证仅此而已,没有其他事情发生。这就是我得到的: 我的考试及格了,但我有一些问题。 > 我需要验证吗?我觉得我这样做是因为我想验证personRepository。实际上调用了count

  • 我将Mockito与JUnit一起使用,为Android项目中的类实现单元测试。问题是,我在随后的两个测试中调用了,而这两个测试完全相同(以确保我正确使用了Mockito),但有趣的是,在第二个测试中的verify总是失败。我怀疑,在使用注释的每次测试之前需要执行一些操作,而我忽略了这些操作。 我使用Android Studio 3.4.1、Mockito 2.7.22和JUnit 4.12。 下

  • 我正在处理一个Spring Boot java服务,该服务包含一个Camel处理器类,如下所示: 当我运行它时,我得到一个失败,声明对1*LogService.Update(_)的调用太少(0个调用)。我试着调试代码,在MyProc中,语句被命中,并且logService对象在高亮显示时(在Eclipse中)状态为“mock for type logService named$spock_shar

  • 如何验证一个模拟对象根本没有被调用?我正在尝试使用Mockito测试一个接口方法的空实现。

  • 我对b()有一套完整的测试,它完成了繁重的任务。不幸的是,我不得不做一个丑陋的想法,比如()(遗留代码),我不想复制所有的测试。方法b()的。此外,这两个都需要公开。 我想验证在某些情况下a()调用b(),但我不能这样做,beacause测试类不是mock。我需要一种方法来验证该方法是在真实对象上调用的,而不仅仅是在模拟对象上调用的。