PowerMock: как шпионить System.out.println? - PullRequest
0 голосов
/ 06 февраля 2019

Допустим, у меня есть следующий класс:

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

, и я хочу проверить «привет» метод:

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

Теперь я хочу шпионить System.out.printlnи убедитесь, что этот метод был вызван с "привет" в качестве аргумента.Как мне это сделать?

1 Ответ

0 голосов
/ 06 февраля 2019

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.

...