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 expected
parameternya @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 ExpectedException
Aturan.
@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.verify
dengan berbagai parameter untuk memastikan bahwa hal-hal tertentu terjadi (sehingga layanan logger dipanggil dengan parameter yang benar) sebelum pengecualian dilemparkan.