我正在使用 PowerMockito 和 Mockito 来模拟一些静态类。我想获取在运行时调用特定模拟对象的次数,以便我可以在另一个模拟对象的验证次数中使用该计数。
我需要这个,因为我正在测试的方法启动一个线程并在一秒钟后停止该线程。我的模拟在这 1 秒内被多次调用。调用第一个mock后,可以调用代码分支和不同的mock。所以,我想将第一个模拟的计数与其他模拟的计数进行比较。
这是一个遗留代码。所以我无法对实际代码进行更改。我只能更改测试代码。
最佳答案
可能有一个更简单的解决方案,因为 Mockito 已经使您能够使用 Mockito.verify()
验证特定模拟的调用次数。但我还没有找到任何返回该计数的方法,因此您可以使用答案并实现自己的计数器:
MyClass myObject = mock(MyClass.class);
final int counter = 0;
when(myObject.myMethod()).then(new Answer<Result>() {
@Override
public Result answer(InvocationOnMock invocation) throws Throwable {
counter++;
return result;
}
});
这个解决方案的问题是你需要为你模拟的每个方法编写上述内容。Mockito 1.10+:
实际上经过 API 版本
1.10
我发现:Mockito.mockingDetails(mock).getInvocations();
关于unit-testing - 如何获得在 Mockito 中调用模拟的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29403436/