Update: JUnit5 memiliki perbaikan untuk pengecualian pengujian: assertThrows.
contoh berikut adalah dari: Panduan Pengguna Junit 5
@Test
void exceptionTesting() {
Throwable exception = assertThrows(IllegalArgumentException.class, () ->
{
throw new IllegalArgumentException("a message");
});
assertEquals("a message", exception.getMessage());
}
Jawaban asli menggunakan JUnit 4.
Ada beberapa cara untuk menguji apakah pengecualian dilemparkan. Saya juga telah membahas opsi di bawah ini dalam posting saya. Bagaimana cara menulis unit test dengan JUnit?
Atur expectedparameternya @Test(expected = FileNotFoundException.class).
@Test(expected = FileNotFoundException.class)
public void testReadFile() {
myClass.readFile("test.txt");
}
Menggunakan 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!"));
}
}
Pengujian dengan ExpectedExceptionAturan.
@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");
}
Anda dapat membaca lebih lanjut tentang pengujian pengecualian di wiki JUnit4 untuk pengujian Pengecualian dan bad.robot - Mengharapkan Pengecualian Aturan JUnit .
org.mockito.Mockito.verifydengan berbagai parameter untuk memastikan bahwa hal-hal tertentu terjadi (sehingga layanan logger dipanggil dengan parameter yang benar) sebelum pengecualian dilemparkan.