1. ホーム
  2. java

[解決済み] JUnit Testアノテーションを使用して例外メッセージをアサートするにはどうすればよいですか?

2022-03-15 16:09:39

質問

いくつかの JUnit テストを作成しました。 @Test アノテーションを使用しています。テストメソッドがチェックされた例外をスローし、例外と一緒にメッセージもアサートしたい場合、JUnitの @Test アノテーションを使用することはできますか?JUnit 4.7ではこの機能は提供されていませんが、今後のバージョンでは提供されるのでしょうか?.NETでは、メッセージと例外クラスをアサートできることは知っています。Javaの世界で同様の機能を探しています。

これが私の欲しいものです。

@Test (expected = RuntimeException.class, message = "Employee ID is null")
public void shouldThrowRuntimeExceptionWhenEmployeeIDisNull() {}

解決方法は?

を使用することができます。 @Rule アノテーションを ExpectedException というように。

@Rule
public ExpectedException expectedEx = ExpectedException.none();

@Test
public void shouldThrowRuntimeExceptionWhenEmployeeIDisNull() throws Exception {
    expectedEx.expect(RuntimeException.class);
    expectedEx.expectMessage("Employee ID is null");

    // do something that should throw the exception...
    System.out.println("=======Starting Exception process=======");
    throw new NullPointerException("Employee ID is null");
}

の例では ExpectedException パブリックなコンストラクタがないのですから、そのような場合は ExpectedException.none() .