Тест jUnit ничего не выводит - PullRequest
1 голос
/ 01 апреля 2019

Я новичок в jUnit, и я запускаю тест на вывод при запуске программы.

Мой тест jUnit:

class Tests {

    private final ByteArrayOutputStream outContent = new
            ByteArrayOutputStream();


    @BeforeEach
     public void setUpStreams() {
     System.setOut(new PrintStream(outContent));
     }

    @AfterEach
     public void cleanUpStreams() {
     System.setOut(null);
     }

     @Test
     public void Test1() {
     Mobile ios = new Mobile();
     ByteArrayInputStream inContent = new 
     ByteArrayInputStream("".getBytes());
     System.setIn(inContent);
     Mobile.main(new String[0]);
     System.setIn(System.in);
     assertNotEquals("Welcome!"+System.lineSeparator(),outContent.toString());
     }
}

Часть моей программы:

public class MobileApp {


    public static void main(String[] args) 
    {
        System.out.println("Welcome!");

}
}

Я ожидаю, что тест пройден, поскольку выходные данные должны быть одинаковыми. Однако после запуска теста происходит сбой, поскольку он показывает, что на самом деле ничего не было выведено. Я не уверен, почему это так, что любая помощь ценится. Сравнение результатов после запуска теста

1 Ответ

3 голосов
/ 01 апреля 2019

Полагаю, это может произойти из-за буферизации в PrintStream.Вы можете передать true для параметра autoFlush при создании PrintStream для решения проблемы, например,

 @BeforeEach
 public void setUpStreams() {
      System.setOut(new PrintStream(outContent, true));
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...