Rumah > Java > javaTutorial > Bagaimana Berkesan Menegaskan Pengecualian dalam Ujian JUnit?

Bagaimana Berkesan Menegaskan Pengecualian dalam Ujian JUnit?

Patricia Arquette
Lepaskan: 2024-12-20 07:51:12
asal
918 orang telah melayarinya

How to Effectively Assert Exceptions in JUnit Tests?

Melaksanakan Penegasan Pengecualian dalam Ujian JUnit

Menegaskan bahawa pengecualian khusus dilemparkan semasa pelaksanaan kod ialah senario ujian biasa dalam JUnit. Untuk melakukan ini dengan berkesan, JUnit menyediakan beberapa kaedah yang meningkatkan kebolehbacaan dan memudahkan proses ujian.

Junit 5 dan 4.13 Penegasan

Dalam JUnit 5 dan 4.13, @Test anotasi dengan atribut yang dijangkakan boleh digunakan terus:

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThrows(IndexOutOfBoundsException.class, () -> emptyList.get(0));
}
Salin selepas log masuk

AssertJ dan Google Truth Assertions

Pustaka penegasan luaran seperti AssertJ dan Google Truth menawarkan kaedah tambahan untuk pengecualian penegasan:

AssertJ:

import static org.assertj.core.api.Assertions.*;

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThatThrownBy(() -> emptyList.get(0))
        .isInstanceOf(IndexOutOfBoundsException.class);
}
Salin selepas log masuk

Google Truth:

import static com.google.common.truth.Truth.*;

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThatCode(() -> emptyList.get(0)).willThrow(IndexOutOfBoundsException.class);
}
Salin selepas log masuk

JUnit Pra-4.13 Penegasan (Ditamatkan)

Untuk JUnit versi sebelum 4.13, pendekatan yang lebih menyusahkan ialah menyemak pengecualian secara manual dalam blok cuba-tangkap:

@Test
public void testIndexOutOfBoundsException() {
    boolean thrown = false;
    ArrayList<Object> emptyList = new ArrayList<>();

    try {
        emptyList.get(0);  // Intentionally triggers an exception
    } catch (IndexOutOfBoundsException e) {
        thrown = true;
    }

    assertTrue(thrown);
}
Salin selepas log masuk

Pendekatan ini tidak digunakan lagi dan kurang idiomatik daripada kaedah yang dinyatakan di atas. Rujuk [JUnit Test-FAQ](https://junit.org/junit4/faq.html) untuk mendapatkan butiran lanjut.

Atas ialah kandungan terperinci Bagaimana Berkesan Menegaskan Pengecualian dalam Ujian 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan