1. ホーム

[解決済み】JUnit 5:例外がスローされたことをアサートする方法は?

2022-03-25 23:41:03

質問

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

現在、テストが例外をスローすることを確認するために @Rule を使用しなければなりませんが、テスト内で複数のメソッドが例外をスローすることが予想される場合、これはうまくいきません。

どのように解決するのですか?

を使用することができます。 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"));
}