Должны ли мы тестировать выходы консоли?

Я работаю с устаревшим кодом, который имеет некоторыеSystem.out.print Команды в себе. Мой плагин eCobertura показывает эти строки красным, поэтому я хочу провести их модульное тестирование.

Вот в stackoverflow я нашел способ вывода результатов консоли консоли, что я очень интересен.

Вот как я это делаю:

        private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();

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

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

        @Test
        public void out() {
            System.out.print("Some message from the system");
            assertEquals("Some message from the system", outContent.toString());
        }

Пока все хорошо, тест становится зеленым, но когда я снова запускаю плагин покрытия кода, я получаю следующее сообщение:

Исключение в потоке «Нить-0» ) в net.sourceforge.cobertura.coveragedata.SaveTimer.run (SaveTimer.java:31) в java.lang.Thread.run (Thread.java:662)

У меня есть некоторые сомнения:

Правильно ли попробовать юнит тестSystem.out.print()'s?Совместима ли eCobertura с этим типом теста?Если eCobertura не совместима с этим типом теста, почему она показывает красную линию?Что-то не так в моем тесте?Я использую jUnit 4.11. Как вы думаете, это как-то связано с этим?почему eCobertura дает мне эту ошибку?

Ответы на вопрос(2)

Ваш ответ на вопрос