比方说,我有下面的类:
class MyClass {
public MyClass(){
}
public void hello() {
System.out.println("hello");
}
}
我想测试“你好”方法:
@Test
public void testHello() {
MyClass mc = new MyClass();
mc.hello();
}
现在,我想窥探的System.out.println,并确保这种方法被称为用“你好”作为参数。我该怎么做?
System.out
实际上是PrintStream
的一个实例,所以我的做法是创建这个类,并直接输出,使用System.setOut
方法的模拟:
PrintStream outMock = Mockito.mock(PrintStream.class);
System.setOut(outMock);
System.out.println("Hello");
Mockito.verify(outMock).println("Hello");
记得在测试后恢复以前PrintStream
情况下,最好在finally
条款。