1. ホーム
  2. java

[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?

2022-03-16 01:06:55

質問

JUnit4 を使って、あるコードが例外をスローするかどうかをイディオムにテストするにはどうすればよいですか?

確かにこんなことはできるけど。

@Test
public void testFooThrowsIndexOutOfBoundsException() {
  boolean thrown = false;

  try {
    foo.doStuff();
  } catch (IndexOutOfBoundsException e) {
    thrown = true;
  }

  assertTrue(thrown);
}

そういえば、アノテーションやAssert.xyzや なんとか このような場合、JUnitの精神に則り、より簡素化された方法で対応することができます。

解決するには?

JUnitのバージョンと、使用しているアサートライブラリに依存します。

のオリジナルの答えは JUnit <= 4.12 でした。

@Test(expected = IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {

    ArrayList emptyList = new ArrayList();
    Object o = emptyList.get(0);

}

回答 https://stackoverflow.com/a/31826781/2986984 には、JUnit <= 4.12 のためのより多くのオプションがあります。

参考文献: