更新: JUnit5 では例外テストが改善されています: assertThrows
.
次の例は、Junit 5 ユーザー ガイドからのものです。
@Test
void exceptionTesting() {
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> {
throw new IllegalArgumentException("a message");
});
assertEquals("a message", exception.getMessage());
}
JUnit 4を使用した元の回答。
例外がスローされたことをテストするには、いくつかの方法があります。また、私の投稿で以下のオプションについても説明しましたJUnitで優れた単体テストを作成する方法
expected
パラメータを設定します@Test(expected = FileNotFoundException.class)
。
@Test(expected = FileNotFoundException.class)
public void testReadFile() {
myClass.readFile("test.txt");
}
使用するtry
catch
public void testReadFile() {
try {
myClass.readFile("test.txt");
fail("Expected a FileNotFoundException to be thrown");
} catch (FileNotFoundException e) {
assertThat(e.getMessage(), is("The file test.txt does not exist!"));
}
}
ExpectedException
ルールによるテスト。
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void testReadFile() throws FileNotFoundException {
thrown.expect(FileNotFoundException.class);
thrown.expectMessage(startsWith("The file test.txt"));
myClass.readFile("test.txt");
}
Exception testingおよびbad.robot - Expecting Exceptions JUnit Ruleの JUnit4 wiki で例外テストの詳細を読むことができます。