Sollten wir Konsolenausgaben testen?

Ich arbeite mit etwas altem Code, der einiges hatSystem.out.print Befehle an sich. Mein eCobertura-Plugin zeigt diese Linien rot an, daher möchte ich sie als Unit-Test durchführen.

Hier Im Stackoverflow habe ich einen Weg gefunden, Konsolenausgaben zu testen, was sehr interessant ist.

So mache ich es:

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

Soweit so gut, der Test wird grün, aber wenn ich das Codeabdeckungs-Plugin erneut starte, erhalte ich die folgende Meldung:

Ausnahme im Thread "Thread-0" java.lang.NullPointerException bei net.sourceforge.cobertura.coveragedata.TouchCollector.applyTouchesOnProjectData (TouchCollector.java:186) bei net.sourceforge.cobertura.coveragedata.ProjectData.saveGlobalPro ) unter net.sourceforge.cobertura.coveragedata.SaveTimer.run (SaveTimer.java:31) unter java.lang.Thread.run (Thread.java:662)

Ich habe Zweifel:

Ist es richtig, einen Unit-Test zu versuchen?System.out.print()'s?Ist eCoberturain mit dieser Art von Test kompatibel?Wenn eCobertura nicht mit dieser Art von Test kompatibel ist, warum wird die Linie rot angezeigt?Stimmt etwas in meinem Test nicht?Ich verwende jUnit 4.11. Glaubst du, das hat etwas damit zu tun?Warum gibt mir eCobertura diesen Fehler?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage