Rumah  >  Artikel  >  Java  >  Bagaimanakah `assertThrows()` JUnit 5' Memudahkan Ujian Pengecualian?

Bagaimanakah `assertThrows()` JUnit 5' Memudahkan Ujian Pengecualian?

DDD
DDDasal
2024-11-19 14:51:03380semak imbas

How Does JUnit 5's `assertThrows()` Simplify Exception Testing?

JUnit 5: Penegasan Pengecualian Dipertingkatkan dengan assertThrows()

Dalam JUnit 5, menegaskan bahawa kaedah membuang pengecualian telah menjadi lebih fleksibel dan cekap dengan pengenalan kaedah assertThrows(). Kaedah ini menghapuskan keperluan untuk pendekatan @Rule yang menyusahkan, terutamanya apabila menangani beberapa pengecualian yang dijangkakan dalam satu ujian.

Menggunakan assertThrows()

Kaedah assertThrows() menerima berbilang argumen:

  • Kelas pengecualian yang dijangkakan (mis., MyException.class)
  • Ungkapan lambda yang melaksanakan kod yang dijangka akan membuang pengecualian
  • Mesej pilihan untuk dipaparkan jika pengecualian tidak dilemparkan
import static org.junit.jupiter.api.Assertions.assertThrows;

@Test
void exceptionTesting() {
    MyException thrown = assertThrows(
        MyException.class,
        () -> myObject.doThing(),
        "Expected doThing() to throw, but it didn't"
    );

    assertTrue(thrown.getMessage().contains("Stuff"));
}

Dalam contoh ini, ujian menjangkakan kaedah doThing() untuk membuang MyException dengan mesej yang mengandungi "Stuff." Jika pengecualian tidak dilemparkan atau jika mesej tidak sepadan, ujian akan gagal.

Kelebihan berbanding @Rule

Berbanding dengan @Rule, assertThrows() menawarkan beberapa kelebihan:

  • Kesederhanaan: Ia mengurangkan kod boilerplate yang dikaitkan dengan penyediaan dan merobohkan peraturan, menjadikan ujian lebih mudah dibaca.
  • Fleksibiliti: Ia membolehkan anda menguji berbilang pengecualian dalam ujian yang sama, mengurangkan keperluan untuk ujian berasingan.
  • Mesej ralat dipertingkatkan: Sekiranya berlaku kegagalan ujian, assertThrows() menyediakan mesej ralat yang lebih kontekstual, menyatakan kelas pengecualian yang dijangkakan dan mesej yang sepatutnya terkandung di dalamnya.

Kesimpulan

Kaedah assertThrows() JUnit 5 memperkasakan pembangun dengan cara yang ringkas dan cekap untuk menegaskan balingan pengecualian dalam ujian mereka. Dengan memperkemas proses dan menyediakan mesej ralat yang dipertingkatkan, assertThrows() menjadikan ujian pengecualian lebih dipercayai dan boleh diselenggara.

Atas ialah kandungan terperinci Bagaimanakah `assertThrows()` JUnit 5' Memudahkan Ujian Pengecualian?. 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