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.
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); }
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); }
Google-Truth:
import static com.google.common.truth.Truth.assertThat; @Test public void testFooThrowsIndexOutOfBoundsException() { assertThat(assertThrows(IndexOutOfBoundsException.class, foo::doStuff)).isNotNull(); }
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); }
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); } }
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!