Rumah >Java >javaTutorial >Bagaimanakah Saya 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.
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!