Czy powinniśmy testować wyjścia konsoli?

Pracuję z jakimś starszym kodem, który ma trochęSystem.out.print same w sobie polecenia. Moja wtyczka eCobertura pokazuje te linie na czerwono, więc chcę je przetestować.

Tutaj w stackoverflow znalazłem sposób na jednostkowe testowanie wyjść konsoli, co jest bardzo interesujące.

Tak to robię:

        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());
        }

Do tej pory tak dobrze, test idzie na zielono, ale kiedy ponownie uruchomię wtyczkę pokrycia kodu, otrzymuję ten komunikat:

Wyjątek w wątku „Thread-0” java.lang.NullPointerException w net.sourceforge.cobertura.coveragedata.TouchCollector.applyTouchesOnProjectData (TouchCollector.java:186) w net.sourceforge.cobertura.coveragedata.ProjectData.saveGlobalProjectData (ProjectData.java:267 ) w net.sourceforge.cobertura.coveragedata.SaveTimer.run (SaveTimer.java:31) w java.lang.Thread.run (Thread.java:662)

Mam parę wątpliwości:

Czy próba jednostkowego testu jest poprawna?System.out.print()'s?Czy eCoberturain jest zgodny z tym typem testu?Jeśli eCobertura nie jest kompatybilny z tym typem testu, dlaczego pokazuje linię czerwoną?Czy coś jest nie tak w moim teście?Używam jUnit 4.11 Czy uważasz, że ma to z tym coś wspólnego?dlaczego eCobertura podaje mi ten błąd?

questionAnswers(2)

yourAnswerToTheQuestion