Heim > Java > javaLernprogramm > Wie teste ich „System.out.println()' in JUnit?

Wie teste ich „System.out.println()' in JUnit?

Susan Sarandon
Freigeben: 2024-12-29 19:57:10
Original
710 Leute haben es durchsucht

How to Unit Test `System.out.println()` in JUnit?

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);
}
Nach dem Login kopieren

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());
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage