在 JUnit 中,測試應拋出異常的程式碼需要乾淨簡潔的方法。雖然可以手動檢查異常,但這不是慣用的方式。
在 JUnit 版本 5 和 4.13 中,您可以使用 @Test(expected = ExceptionClass.class) 註解關於測試方法。這期望拋出指定的異常。
範例:
@Test(expected = IndexOutOfBoundsException.class) public void testIndexOutOfBoundsException() { ArrayList emptyList = new ArrayList(); emptyList.get(0); }
如果使用 AssertJ 或 Google-Truth等等庫,您可以使用他們的斷言需要驗證
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(); }
@Rule public ExpectedException thrown = ExpectedException.none(); @Test public void testIndexOutOfBoundsException() { thrown.expect(IndexOutOfBoundsException.class); ArrayList emptyList = new ArrayList(); emptyList.get(0); }
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); } }
以上是如何在 JUnit 測試中斷言異常處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!