我正在寻找一种使用Mockito验证的方法,以确保在测试期间没有与给定模拟对象进行交互。对于给定方法使用verification mode
实际上我想要实现的是:在测试中验证控制台没有输出任何内容。在jUnit中的一般思路如下:
一个
never()
可以轻松实现这一点,但是我还没有找到完整模拟对象的解决方案。实际上我想要实现的是:在测试中验证控制台没有输出任何内容。在jUnit中的一般思路如下:
private PrintStream systemOut;
@Before
public void setUp() {
// spy on System.out
systemOut = spy(System.out);
}
@After
public void tearDown() {
verify(systemOut, never()); // <-- that doesn't work, just shows the intention
}
一个
PrintStream
有很多方法,我真的不想用单独的验证来验证每个方法 - 对于 System.err
也是一样的... 所以我希望,如果有一个简单的解决方案,那么在我拥有良好的测试覆盖率的情况下,可以强制软件工程师(和我自己)在提交更改之前删除他们(我的)调试代码,如 System.out.println("Breakpoint#1");
或 e.printStacktrace();
。
verifyZeroInteractions
现已被弃用,推荐使用org.mockito.Mockito#verifyNoInteractions
。该方法的作用相同,只是名称不同。 - Andy Birchall