JUnit 5: 例外がスローされたことをアサートするにはどうすればいいですか? 質問する

JUnit 5: 例外がスローされたことをアサートするにはどうすればいいですか? 質問する

JUnit 5 でメソッドが例外をスローすることをアサートするより良い方法はありますか?

現在、テストが例外をスローすることを確認するために @Rule を使用する必要がありますが、テストで複数のメソッドが例外をスローすることが予想される場合には、この方法は機能しません。

ベストアンサー1

使用できますassertThrows()、同じテスト内で複数の例外をテストできます。Java 8 ではラムダがサポートされているため、これは JUnit で例外をテストする標準的な方法です。

によるとJUnit ドキュメント:

import static org.junit.jupiter.api.Assertions.assertThrows;

@Test
void exceptionTesting() {
    MyException thrown = assertThrows(
           MyException.class,
           () -> myObject.doThing(),
           "Expected doThing() to throw, but it didn't"
    );

    assertTrue(thrown.getMessage().contains("Stuff"));
}

おすすめ記事