Rumah > Java > javaTutorial > Bagaimana untuk Ujian Unit `System.out.println()` dalam JUnit?

Bagaimana untuk Ujian Unit `System.out.println()` dalam JUnit?

Susan Sarandon
Lepaskan: 2024-12-29 19:57:10
asal
731 orang telah melayarinya

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

Menguji System.out.println() dengan JUnit

Bagaimana anda boleh menulis ujian JUnit untuk aplikasi yang menulis mesej ralat ke output standard , terutamanya apabila mesej ini tidak konsisten dan tidak boleh dipercayai? Untuk menguji senario ini dengan berkesan, anda mesti menangkap output konsol dan menegaskan kandungannya.

Ubah Hala Output Konsol

Merakam output konsol memerlukan pengalihan kedua-dua output standard (System.out ) dan ralat piawai (System.err) semasa ujian. Ini boleh dicapai menggunakan kaedah ByteArrayOutputStream dan System.setXXX. Berikut ialah contoh pelaksanaan:

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);
}
Salin selepas log masuk

Contoh Kes Ujian

Dengan output konsol diubah hala, anda boleh menulis kes ujian untuk menegaskan output yang dijangkakan:

@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());
}
Salin selepas log masuk

Kes ujian ini menegaskan bahawa output sistem adalah seperti yang diharapkan, membolehkan anda mengesahkan jika log aplikasi konsisten dengan permintaan yang berbeza jawapan.

Nota: Dalam versi terdahulu jawapan ini, System.setOut(null) telah digunakan selepas ujian, yang boleh membawa kepada NullPointerExceptions. Kod yang dikemas kini dengan betul memulihkan strim asal selepas setiap ujian untuk mengelakkan isu sedemikian.

Atas ialah kandungan terperinci Bagaimana untuk Ujian Unit `System.out.println()` dalam JUnit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan