Car*_*nte 5 java junit unit-testing mockito
如果我们有以下代码:
@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();
}
Run Code Online (Sandbox Code Playgroud)
我知道它将通过第一个验证,但是我对第二个验证有疑问。验证方法是否对调用该方法的所有时间进行计数,还是仅自上次验证以来进行计数?
OHY*_*OHY 31
请注意,可以使用 Mockito.reset(mock) 重置调用方法的时间
更新:如下面的 t7tran 建议,使用 clearInvocations(T... mocks) 将仅重置调用次数
coo*_*ort 18
使用void reset(T... mocks)将重置模拟上的所有存根。如果您只需要为后续验证重置调用计数,请使用void clearInvocations(T... mocks)。
创建后,模拟将记住所有交互。然后,您可以有选择地验证您感兴趣的任何交互。
这意味着,每次调用所需的方法时,模拟都会计数,并且在调用时不会重置verify。
如果您想要有关此的更多信息,请阅读以下内容(这是我在其中找到这些信息的地方):
http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html