Güncelleme: JUnit5 test istisnalar bir iyileşme vardır: assertThrows
.
aşağıdaki örnek: Junit 5 Kullanıcı Kılavuzu
@Test
void exceptionTesting() {
Throwable exception = assertThrows(IllegalArgumentException.class, () ->
{
throw new IllegalArgumentException("a message");
});
assertEquals("a message", exception.getMessage());
}
JUnit 4 kullanarak orijinal cevap.
Bir istisnanın atıldığını test etmenin birkaç yolu vardır. Ayrıca yazıma aşağıdaki seçenekleri de tartıştım JUnit ile harika birim testleri nasıl yazılır
expected
Parametreyi ayarlayın @Test(expected = FileNotFoundException.class)
.
@Test(expected = FileNotFoundException.class)
public void testReadFile() {
myClass.readFile("test.txt");
}
kullanma 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
Kural ile Test .
@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");
}
İstisna testi için istisna testi ve istisna testi için bad.robot istisna testi JUnit Kuralı hakkında daha fazla bilgi edinebilirsiniz .
org.mockito.Mockito.verify
istisna atılmadan önce genellikle bazı şeylerin (bir günlükçü hizmetinin doğru parametrelerle çağrıldığı şekilde) gerçekleştiğinden emin olmak için hala çeşitli parametrelerle aramak istiyorum .