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

Bagaimana Berkesan Menegaskan Pengecualian dalam Ujian JUnit?

Patricia Arquette
Patricia Arquetteasal
2024-12-20 07:51:12925semak imbas

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

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

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

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

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!

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