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!