Cập nhật: JUnit5 có một cải tiến để kiểm tra ngoại lệ : assertThrows
.
ví dụ sau là từ: Hướng dẫn sử dụng Junit 5
@Test
void exceptionTesting() {
Throwable exception = assertThrows(IllegalArgumentException.class, () ->
{
throw new IllegalArgumentException("a message");
});
assertEquals("a message", exception.getMessage());
}
Câu trả lời gốc bằng JUnit 4.
Có một số cách để kiểm tra rằng một ngoại lệ được ném ra. Tôi cũng đã thảo luận về các tùy chọn bên dưới trong bài viết của mình Cách viết bài kiểm tra đơn vị tuyệt vời với JUnit
Đặt expected
tham số @Test(expected = FileNotFoundException.class)
.
@Test(expected = FileNotFoundException.class)
public void testReadFile() {
myClass.readFile("test.txt");
}
Sử dụng 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!"));
}
}
Kiểm tra với ExpectedException
Quy tắc.
@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");
}
Bạn có thể đọc thêm về kiểm tra ngoại lệ trong wiki JUnit4 để kiểm tra Ngoại lệ và bad.robot - Yêu cầu ngoại lệ Quy tắc JUnit .
org.mockito.Mockito.verify
với nhiều tham số khác nhau để đảm bảo rằng một số điều đã xảy ra (ví dụ như dịch vụ logger được gọi với các tham số chính xác) trước khi ném ngoại lệ.