Rumah > Java > javaTutorial > Bagaimanakah Saya Menegaskan Pengendalian Pengecualian dalam Ujian JUnit?

Bagaimanakah Saya Menegaskan Pengendalian Pengecualian dalam Ujian JUnit?

Susan Sarandon
Lepaskan: 2025-01-04 07:54:35
asal
466 orang telah melayarinya

How Do I Assert Exception Handling in JUnit Tests?

Menegaskan Pengendalian Pengecualian dalam Ujian JUnit

Dalam JUnit, kod ujian yang sepatutnya membuang pengecualian memerlukan pendekatan yang bersih dan ringkas. Walaupun menyemak pengecualian secara manual adalah mungkin, ini bukan cara yang idiomatik.

JUnit 5 dan 4.13

Dalam JUnit versi 5 dan 4.13, anda boleh menggunakan @Test(expected = ExceptionClass.class) anotasi pada kaedah ujian. Ini menjangkakan pengecualian yang dinyatakan akan dilemparkan.

Contoh:

@Test(expected = IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {
    ArrayList emptyList = new ArrayList();
    emptyList.get(0);
}
Salin selepas log masuk

AssertJ dan Google-Truth

Jika menggunakan perpustakaan seperti AssertJ atau Google-Truth, anda boleh menggunakan dakwaan mereka untuk mengesahkan pengecualian.

AssertJ:

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

@Test
public void testFooThrowsIndexOutOfBoundsException() {
    assertThatThrownBy(() -> foo.doStuff()).isInstanceOf(IndexOutOfBoundsException.class);
}
Salin selepas log masuk

Google-Truth:

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

@Test
public void testFooThrowsIndexOutOfBoundsException() {
    assertThat(assertThrows(IndexOutOfBoundsException.class, foo::doStuff)).isNotNull();
}
Salin selepas log masuk

JUnit <= 4.12

Dalam versi JUnit kurang daripada atau sama dengan 4.12, anda boleh menggunakan Peraturan atau TryCatch untuk mengendalikan pengecualian.

Menggunakan Peraturan:

@Rule
public ExpectedException thrown = ExpectedException.none();

@Test
public void testIndexOutOfBoundsException() {
    thrown.expect(IndexOutOfBoundsException.class);
    ArrayList emptyList = new ArrayList();
    emptyList.get(0);
}
Salin selepas log masuk

Menggunakan TryCatch:

import static org.junit.Assert.assertEquals;

@Test
public void testIndexOutOfBoundsException() {
    try {
        ArrayList emptyList = new ArrayList();
        emptyList.get(0);
        fail("IndexOutOfBoundsException was expected");
    } catch (IndexOutOfBoundsException e) {
        assertEquals(e.getClass(), IndexOutOfBoundsException.class);
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Menegaskan Pengendalian Pengecualian dalam Ujian JUnit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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