Моделирование вывода JUnit для заданного входа

public void MyTest {
 @Rule
   public final TextFromStandardInputStream systemInMock
  = emptyStandardInputStream();

 @Test
 public void shouldTakeUserInput() {
    systemInMock.provideLines("add 5", "another line");
     InputOutput inputOutput = new InputOutput();
    assertEquals("add 5", inputOutput.getInput());
 }
}

Здесь я хочу проверить на входе добавить 5 мой вывод, если какой-то оператор, используя System.out.println() утверждение в некотором методе. Можно ли смоделировать выходной оператор?

1 ответ

Решение

Вы можете использовать SystemOutRule чтобы получить результат, записанный в System.out и утверждаю против этого

public class MyTest {
    @Rule
    public final TextFromStandardInputStream systemInMock = 
        emptyStandardInputStream();

    @Rule
    public final SystemOutRule systemOutRule = new SystemOutRule().enableLog();

    @Test
    public void shouldTakeUserInput() {
        systemInMock.provideLines("add 5", "another line");

        MyCode myCode = new MyCode();
        myCode.doSomething();

        assertEquals("expected output", systemOutRule.getLog());
    }
}
Другие вопросы по тегам