PowerMock:如何监视 System.out.println?
PowerMock: How to spy System.out.println?
假设我有以下 class:
class MyClass {
public MyClass(){
}
public void hello() {
System.out.println("hello");
}
}
我想测试 'hello' 方法:
@Test
public void testHello() {
MyClass mc = new MyClass();
mc.hello();
}
现在,我想监视 System.out.println 并确保以 "hello" 作为参数调用此方法。我该怎么做?
System.out
实际上是 PrintStream
的一个实例,所以我的方法是创建这个 class 的模拟并使用 System.setOut
方法直接输出到那个:
PrintStream outMock = Mockito.mock(PrintStream.class);
System.setOut(outMock);
System.out.println("Hello");
Mockito.verify(outMock).println("Hello");
记得在测试后恢复之前的PrintStream
实例,最好在finally
子句中。
假设我有以下 class:
class MyClass {
public MyClass(){
}
public void hello() {
System.out.println("hello");
}
}
我想测试 'hello' 方法:
@Test
public void testHello() {
MyClass mc = new MyClass();
mc.hello();
}
现在,我想监视 System.out.println 并确保以 "hello" 作为参数调用此方法。我该怎么做?
System.out
实际上是 PrintStream
的一个实例,所以我的方法是创建这个 class 的模拟并使用 System.setOut
方法直接输出到那个:
PrintStream outMock = Mockito.mock(PrintStream.class);
System.setOut(outMock);
System.out.println("Hello");
Mockito.verify(outMock).println("Hello");
记得在测试后恢复之前的PrintStream
实例,最好在finally
子句中。