Mockito可以验证模拟对象上方法调用的总数吗?

ale*_*all 5 java unit-testing mockito

Mockito verify可以断言与模拟对象上的方法发生一定数量的交互.

// Given
SomeService someService = mock(SomeService.class);

// When
someService.prepare();
someService.prepare();

// Then
verify(someService, times(2)).prepare(); // test passes
Run Code Online (Sandbox Code Playgroud)

有时在单元测试中知道模拟对象上的方法调用总数没有改变是有用的.

这在添加新方法调用时提供可见性(即失败的测试).

Mockito提供此功能吗?

在某些情况下,我想打电话:

verify(someService, times(2));
Run Code Online (Sandbox Code Playgroud)

..没有得到UnfinishedVerificationException:

org.mockito.exceptions.misusing.UnfinishedVerificationException: 
Missing method call for verify(mock)...

Example of correct verification:
  verify(mock).doSomething()
Run Code Online (Sandbox Code Playgroud)

Bri*_*ice 7

那个时候没有API.您可以尝试使用编写自己的验证程序代码MockingDetails.getInvocations

Mockito.mockingDetails(mock).getInvocations()
Run Code Online (Sandbox Code Playgroud)