System.out.println() mit JUnit testen
Wie können Sie JUnit-Tests für eine Anwendung schreiben, die Fehlermeldungen in die Standardausgabe schreibt? , insbesondere wenn diese Nachrichten inkonsistent und unzuverlässig sind? Um diese Szenarien effektiv zu testen, müssen Sie die Konsolenausgabe erfassen und ihren Inhalt bestätigen.
Konsolenausgabe umleiten
Um die Konsolenausgabe zu erfassen, müssen beide Standardausgaben (System.out) umgeleitet werden ) und Standardfehler (System.err) während des Tests. Dies kann mit den Methoden ByteArrayOutputStream und System.setXXX erreicht werden. Hier ist eine Beispielimplementierung:
private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); private final ByteArrayOutputStream errContent = new ByteArrayOutputStream(); private final PrintStream originalOut = System.out; private final PrintStream originalErr = System.err; @Before public void setUpStreams() { System.setOut(new PrintStream(outContent)); System.setErr(new PrintStream(errContent)); } @After public void restoreStreams() { System.setOut(originalOut); System.setErr(originalErr); }
Beispieltestfälle
Mit umgeleiteter Konsolenausgabe können Sie Testfälle schreiben, um die erwartete Ausgabe zu bestätigen:
@Test public void out() { System.out.print("hello"); assertEquals("hello", outContent.toString()); } @Test public void err() { System.err.print("hello again"); assertEquals("hello again", errContent.toString()); }
Diese Testfälle stellen sicher, dass die Systemausgabe wie erwartet ist, sodass Sie überprüfen können, ob die Anwendungsprotokolle mit unterschiedlichen Anforderungen konsistent sind Antworten.
Hinweis: In früheren Versionen dieser Antwort wurde System.setOut(null) nach den Tests verwendet, was zu NullPointerExceptions führen konnte. Der aktualisierte Code stellt die ursprünglichen Streams nach jedem Test korrekt wieder her, um solche Probleme zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie teste ich „System.out.println()' in JUnit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!