Rumah > Java > javaTutorial > Bagaimana untuk Menguji System.out dan System.err Output dalam JUnit?

Bagaimana untuk Menguji System.out dan System.err Output dalam JUnit?

DDD
Lepaskan: 2024-12-17 16:31:11
asal
153 orang telah melayarinya

How to Test System.out and System.err Output in JUnit?

Menguji Output Sistem dalam JUnit

Dalam sistem warisan, aplikasi mungkin mencetak mesej ralat atau nyahpepijat maklumat kepada output standard dan bukannya mengembalikan ralat secara eksplisit . Menguji output sedemikian boleh mencabar dengan JUnit.

Masalah:

Ujian unit memerlukan cara untuk menegaskan kandungan output konsol untuk menangkap kes di mana System.out. println() digunakan dan bukannya ralat yang betul pengendalian.

Penyelesaian:

Menggunakan ByteArrayOutputStream dan System.setXXX() membolehkan kami mengubah hala keluaran sistem dan menangkapnya untuk ujian.

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

Kes Ujian:

@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

Nota:

Versi terdahulu jawapan ini dipanggil System.setOut(null) selepas ujian. Inilah punca pengulas NullPointerExceptions dirujuk.

Atas ialah kandungan terperinci Bagaimana untuk Menguji System.out dan System.err Output dalam JUnit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan