JUnit テストでの例外アサーションの実行
コードの実行中に特定の例外がスローされることをアサートすることは、JUnit の一般的なテスト シナリオです。これを効果的に行うために、JUnit には読みやすさを高め、テスト プロセスを簡素化するメソッドがいくつか用意されています。
JUnit 5 および 4.13 アサーション
JUnit 5 および 4.13 では、@Test期待される属性を持つアノテーションを使用できます直接:
@Test public void testIndexOutOfBoundsException() { ArrayList<Object> emptyList = new ArrayList<>(); assertThrows(IndexOutOfBoundsException.class, () -> emptyList.get(0)); }
AssertJ および Google Truth アサーション
AssertJ や Google Truth などの外部アサーション ライブラリは、例外に対する追加のメソッドを提供しますアサーション:
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 Pre-4.13アサーション(非推奨)
4.13 より前の JUnit バージョンでは、try-catch ブロック内の例外を手動でチェックするというより面倒なアプローチがありました。
@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); }
このアプローチは非推奨です前述の方法ほど慣用的ではありません。詳細については、[JUnit テスト FAQ](https://junit.org/junit4/faq.html) を参照してください。
以上がJUnit テストで例外を効果的にアサートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。