Heim >Java >javaLernprogramm >Wie teste ich die Konsolenausgabe in JUnit?
Konsolenausgabe in JUnit testen
Beim Testen älterer Anwendungen mit schlechtem Design stoßen Sie möglicherweise auf Code, der Fehlermeldungen in die Standardausgabe schreibt. Um eine solche Konsolenausgabe in JUnit zu bestätigen, benötigen Sie eine Möglichkeit, die Ausgabe umzuleiten und zu erfassen.
Konsolenausgabe umleiten
Das Java-System kann so konfiguriert werden, dass Konsolenausgaben gesendet werden zu bestimmten Streams. Wir können diesen Mechanismus nutzen, um die Ausgabe zu erfassen und zu testen.
Ausgabe mit ByteArrayOutputStream erfassen
Ein ByteArrayOutputStream kann zum Erfassen der Konsolenausgabe verwendet werden. Dazu ersetzen wir die Standard-Ausgabestreams durch neue Streams, die in den ByteArrayOutputStream schreiben.
Beispiel:
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); }
Konsolenausgabe testen
Sobald die Ausgabe erfasst ist, können wir ihren Inhalt mit der Funktion „assertEquals()“ von JUnit bestätigen. Methode.
Beispieltestfälle:
@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()); }
Schlussfolgerung
Durch Umleiten der Konsolenausgabe an ByteArrayOutputStreams und Verwendung von System. Mit setXXX() zum Konfigurieren der System-Streams können Sie die Konsolenausgabe in Ihren JUnit-Tests effektiv testen und bestätigen.
Das obige ist der detaillierte Inhalt vonWie teste ich die Konsolenausgabe in JUnit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!