Devemos nós testar as saídas do console?

Eu estou trabalhando com algum código legado que tem algumSystem.out.print comandos em si. Meu plugin eCobertura mostra essas linhas vermelhas, então eu quero testá-las.

Aqui em stackoverflow eu encontrei uma maneira de unidade de teste de saídas do console que eu acho que é muito interessante.

É assim que eu faço:

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

Até aí tudo bem, o teste fica verde, mas quando eu executo o plug-in de cobertura de código novamente, recebo esta mensagem:

Exceção no encadeamento "Thread-0" java.lang.NullPointerException em net.sourceforge.cobertura.coveragedata.TouchCollector.applyTouchesOnProjectData (TouchCollector.java:186) em net.sourceforge.cobertura.coveragedata.ProjectData.saveGlobalProjectData (ProjectData.java:267 ) em net.sourceforge.cobertura.coveragedata.SaveTimer.run (SaveTimer.java:31) em java.lang.Thread.run (Thread.java:662)

Tenho algumas duvidas:

É correto tentar o teste de unidadeSystem.out.print()'s?O eCobertur é compatível com este tipo de teste?Se eCobertura não for compatível com este tipo de teste, por que mostra a linha vermelha?Há algo de errado no meu teste?Eu estou usando o jUnit 4.11 você acha que isso tem algo a ver com isso?Por que a eCobertura está me dando esse erro?

questionAnswers(2)

yourAnswerToTheQuestion