Rumah >Java >javaTutorial >Bagaimana untuk Menguji System.out.println() dengan Berkesan dengan JUnit?

Bagaimana untuk Menguji System.out.println() dengan Berkesan dengan JUnit?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-18 07:38:11313semak imbas

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

Pengujian JUnit untuk I/O Konsol dalam System.out.println()

Dalam kod warisan, log keluaran konsol (System.out .println()) boleh menimbulkan cabaran semasa menulis ujian JUnit. Apabila kaedah di bawah ujian memancarkan log konsol, menjadi sukar untuk mengesahkan tingkah laku yang dijangka menggunakan penegasan JUnit standard.

Untuk menangani cabaran ini, seseorang boleh memanfaatkan kelas ByteArrayOutputStream dan kaedah System.setXXX untuk menangkap dan menegaskan output konsol dalam ujian.

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

Kod ini menangkap output konsol dalam strim outContent dan errContent. Dengan mengubah hala strim System.out dan System.err, sebarang panggilan println() semasa ujian akan ditangkap dalam penimbal ini.

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

Kes ujian ini menggambarkan cara mengesahkan output yang ditangkap terhadap nilai yang dijangkakan. Dengan memanfaatkan teknik ini, seseorang boleh menguji kelakuan kod yang mengeluarkan output konsol dengan berkesan, memastikan mesej yang dijangkakan dipaparkan dalam pelbagai keadaan.

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

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