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!