【Java+Junit5】例外を期待するテストをする
適切な例外が発生するかどうかをテストしたいときのやりかた。
assertThrowsを使って例外が発生することを確認する
assertThrowsを使うことで、期待した例外が発生したかどうかを確認することが出来ます。
public class なんかのクラス_の_テスト{
@test
public void 例外を期待するテスト(){
// Arrange
Book テストデータ = null // わざとnullにしておく
// Assert
assertThrows(NullpointerException.class, () -> {
// Act
テストデータ.getTitle() //ぬるぽ
});
}
}
assertThrowsの中に、期待する例外クラス名と、実行したいテストをラムダ式で記述します。
AssertとActの見た目の記述順が順番入れ替わっちゃうけど仕方ない。
ラムダ式よく分からなくても、「assertThrowsの第二引数に『( ) -> { }』って書いて、{}の中に実行したい関数記述する」って覚えとけば取りあえず動きます。尚その場合「良く分かんないけど動くモノ」がプロジェクト内に存在することの是非についてはチームと相談してください。否って言われたらこちらの記事もどうぞ。
ちなみにこの書き方はJunit5でないとできないので注意が必要です。
例外が起きないことを確認するテスト
ちなみにassertDoseNotThrowsを使えば、逆に「例外が発生しなかったこと」をテスト出来ます。(基本的には正常系のテストすれば「ちゃんと動いたときには例外は発生しないこと」は確かめられますが、特定の条件下で例外をわざと見逃したい場合とか)
とりあえず今回は例外の発生をテストする方法だけ。
この記事が気に入ったらサポートをしてみませんか?