[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
2022-03-16 01:06:55
質問
JUnit4 を使って、あるコードが例外をスローするかどうかをイディオムにテストするにはどうすればよいですか?
確かにこんなことはできるけど。
@Test
public void testFooThrowsIndexOutOfBoundsException() {
boolean thrown = false;
try {
foo.doStuff();
} catch (IndexOutOfBoundsException e) {
thrown = true;
}
assertTrue(thrown);
}
そういえば、アノテーションやAssert.xyzや なんとか このような場合、JUnitの精神に則り、より簡素化された方法で対応することができます。
解決するには?
JUnitのバージョンと、使用しているアサートライブラリに依存します。
- JUnit5 および 4.13 については、回答を参照してください。 https://stackoverflow.com/a/2935935/2986984
- assertJまたはgoogle-truthを使用する場合は、回答を参照してください。 https://stackoverflow.com/a/41019785/2986984
のオリジナルの答えは
JUnit <= 4.12
でした。
@Test(expected = IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {
ArrayList emptyList = new ArrayList();
Object o = emptyList.get(0);
}
回答 https://stackoverflow.com/a/31826781/2986984 には、JUnit <= 4.12 のためのより多くのオプションがあります。
参考文献:
関連
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Pythonで例外を表示するには?
-
[解決済み] Pythonの関数が例外を投げるかどうかをテストするにはどうすればよいですか?
-
[解決済み] 例外がスローされたことを確認するためにAssertを使用するにはどうすればよいですか?
-
[解決済み] Mavenが実行するJUnitテストを見つけ出せない
-
[解決済み] JUnit Testアノテーションを使用して例外メッセージをアサートするにはどうすればよいですか?
-
[解決済み] PHPUnit は例外がスローされたことを表明しますか?
-
[解決済み】JUnit 5:例外がスローされたことをアサートする方法は?
-
[解決済み】例外がスローされないことをテストする方法は?
-
[解決済み】2つのJUnit Assertクラスの相違点
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java.util.NoSuchElementException 原因解析と解決方法
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
Java Exceptionが発生しました エラー解決
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
Methodのinvokeメソッド実装のJavaリフレクション
-
自動配線された依存性のインジェクションに失敗しました。
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
javaでクラスを作成すると、enclosing classでないように見える
-
ローカルリソースのロードが許可されていない場合の解決策