Rumah >Java >javaTutorial >Bagaimanakah JUnit Boleh Menguji Output `System.out.println()` dengan Berkesan?

Bagaimanakah JUnit Boleh Menguji Output `System.out.println()` dengan Berkesan?

Linda Hamilton
Linda Hamiltonasal
2024-12-28 16:17:54177semak imbas

How Can JUnit Effectively Test `System.out.println()` Output?

Junit Testing for System.out.println() Output

Dalam aplikasi warisan, penyelesaian masalah boleh menjadi mencabar apabila bergantung semata-mata pada mesej ralat standard dicetak ke konsol. Untuk mengurangkan ini, JUnit menyediakan kaedah untuk menangkap dan menegaskan output konsol.

Untuk menguji output System.out.println(), pertimbangkan pendekatan berikut:

  1. Mulakan Tangkapan Output:

    • Buat Objek ByteArrayOutputStream (cth., outContent dan errContent) untuk menyimpan strim output dan ralat.
    • Gunakan System.setOut(New PrintStream(outContent)) dan System.setErr(new PrintStream(errContent)) untuk mengubah hala strim konsol kepada ini objek.
  2. Laksanakan Ujian:

    • Panggil System.out.println(output) atau System.out.print (output) dalam kaedah ujian untuk menangkap yang dimaksudkan output.
  3. Assert Output:

    • Gunakan kaedah assertEquals(jangkaan, sebenar) untuk membandingkan output yang ditangkap ( outContent atau errContent) dengan jangkaan output.

Contoh Kes Ujian:

@Test
public void testOut() {
    System.out.print("hello");
    assertEquals("hello", outContent.toString());
}

@Test
public void testErr() {
    System.err.print("error occurred");
    assertEquals("error occurred", errContent.toString());
}

Nota: Pastikan System.setOut() dan panggilan System.setErr() dikembalikan selepas setiap ujian menggunakan originalOut dan originalErr. Kegagalan berbuat demikian boleh membawa kepada NullPointerExceptions semasa ujian berikutnya.

Atas ialah kandungan terperinci Bagaimanakah JUnit Boleh Menguji Output `System.out.println()` dengan Berkesan?. 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