見出し画像

【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を使えば、逆に「例外が発生しなかったこと」をテスト出来ます。(基本的には正常系のテストすれば「ちゃんと動いたときには例外は発生しないこと」は確かめられますが、特定の条件下で例外をわざと見逃したい場合とか)
とりあえず今回は例外の発生をテストする方法だけ。


この記事が気に入ったらサポートをしてみませんか?