Mockito -是否验证方法重启次数?

ztmd8pv5  于 2023-05-06  发布在  其他
关注(0)|答案(4)|浏览(219)

如果我们有这个代码:

@Test
public void test1(){
  Interface1 i1 = mock(Interface1.class)
  method1(); // This method calls i1.mockedmethod()
  verify(i1, times(1)).mockedmethod();
  method1();
  verify(i1, times(2)).mockedmethod();
}

我知道它会通过第一个验证,但我怀疑第二个。verify方法是计算该方法被调用的所有次数,还是只计算自上次verify以来调用的次数?

tvz2xvvm

tvz2xvvm1#

Mockito会记住,所以它从第一次交互开始计数,不会重置。
另外,请注意,verify(i1, times(1)).mockedmethod();verify(i1).mockedmethod();相同。
关于mockito here的更多信息。

czfnxgou

czfnxgou2#

使用void reset(T...模拟)将重置模拟上的所有存根。如果您只需要为后续验证重置调用计数,请使用void clearInvocations(T...模拟)。

2j4z5cfb

2j4z5cfb3#

请注意,可以使用Mockito.reset(mock)重置调用方法的次数
更新:正如下面t7tran所建议的,使用clearInvocations(T... mocks)将只重置调用的数量。

tyu7yeag

tyu7yeag4#

  • 一旦创建,mock将记住所有交互。然后,您可以选择性地验证您感兴趣的任何交互 *。

这意味着每次调用所需的方法时,mock都会计数,并且在调用verify时不会重置。
如果你想了解更多信息,请阅读以下内容(这是我找到这些信息的地方):
http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html

相关问题