Heim >Java >javaLernprogramm >Wie teste ich System.out.println() effektiv mit JUnit?

Wie teste ich System.out.println() effektiv mit JUnit?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-18 07:38:11313Durchsuche

How to Effectively Test System.out.println() with JUnit?

JUnit-Tests für Konsolen-E/A in System.out.println()

In Legacy-Code werden Konsolenausgabeprotokolle (System.out.out .println()) kann beim Schreiben von JUnit-Tests zu Herausforderungen führen. Wenn die zu testende Methode Konsolenprotokolle ausgibt, wird es schwierig, das erwartete Verhalten mit Standard-JUnit-Zusicherungen zu überprüfen.

Um dieser Herausforderung zu begegnen, kann man die ByteArrayOutputStream-Klasse und die System.setXXX-Methoden nutzen, um Konsolenausgaben zu erfassen und zu bestätigen innerhalb von Tests.

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

Dieser Code erfasst die Konsolenausgabe in outContent- und errContent-Streams. Durch die Umleitung der System.out- und System.err-Streams werden alle println()-Aufrufe während des Tests in diesen Puffern erfasst.

@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 veranschaulichen, wie die erfasste Ausgabe anhand der erwarteten Werte überprüft wird. Durch die Nutzung dieser Technik kann man das Verhalten von Code, der Konsolenausgaben ausgibt, effektiv testen und so sicherstellen, dass die erwarteten Meldungen unter verschiedenen Bedingungen angezeigt werden.

Das obige ist der detaillierte Inhalt vonWie teste ich System.out.println() effektiv mit JUnit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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