代码之家  ›  专栏  ›  技术社区  ›  CrazySynthax

PowerMock:如何监视System.out.println?

  •  1
  • CrazySynthax  · 技术社区  · 7 年前

    假设我有以下课程:

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

    我想测试“hello”方法:

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   Henrik Aasted Sørensen    7 年前

    System.out 实际上是 PrintStream ,因此我的方法是创建此类的模拟,并使用 System.setOut

    PrintStream outMock = Mockito.mock(PrintStream.class);
    System.setOut(outMock);
    System.out.println("Hello");
    Mockito.verify(outMock).println("Hello");
    

    记得恢复以前的状态 打印流 试验后,最好在 finally