PowerMock: How to spy System.out.println?



假设我有以下类:

class MyClass { 
    public MyClass(){
    }
    public void hello() {
       System.out.println("hello");
    }
}

我想测试"你好"方法:

@Test
public void testHello() {
    MyClass mc = new MyClass();
    mc.hello();
}

现在,我想监视System.out.println并确保使用"hello"作为参数调用此方法。我该怎么做?

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子句中。

相关内容

  • 没有找到相关文章

最新更新