答案是肯定的,您可以,并且根据测试的需要,基本上可以分为两个级别。
如果只想测试与模拟对象的交互,则可以简单地使用
verify()方法来验证是否调用了void方法。
如果您的测试确实需要模拟对象来修改传递给它的参数,则需要实现
Answer:
编辑 以显示使用带有无效方法的答案的正确形式
doAnswer(new Answer() { @Override Object answer(InvocationOnMock invocation) { Object[] args = invocation.getArguments(); ((MyClass)args[0]).myClassSetMyField(NEW_VALUE); return null; // void method, so return null }}).when(mock).someMethod();在Java 8+中,上述内容通过lambda进行了简化:
doAnswer(invocation-> { Object[] args = invocation.getArguments(); ((MyClass)args[0]).myClassSetMyField(NEW_VALUE); return null;}).when(mock).someMethod();


