Bazı kodların istisna oluşturduğunu test etmek için JUnit4'ü deyimsel olarak nasıl kullanabilirim?
Ben kesinlikle böyle bir şey yapabilirim:
@Test
public void testFooThrowsIndexOutOfBoundsException() {
boolean thrown = false;
try {
foo.doStuff();
} catch (IndexOutOfBoundsException e) {
thrown = true;
}
assertTrue(thrown);
}
Bu tür durumlar için çok daha az karmaşık ve JUnit'in ruhuna çok daha uygun bir ek açıklama veya Assert.xyz ya da bir şey olduğunu hatırlıyorum.
JUnit 4`ün bu konuda desteği vardır:
@Test(expected = IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {
ArrayList emptyList = new ArrayList();
Object o = emptyList.get(0);
}
Referans:
Şuna ne dersin? Çok genel bir istisnayı yakalayın, yakalama bloğundan çıktığından emin olun, ardından istisnanın sınıfının olmasını beklediğiniz şey olduğunu iddia edin. Bu assert, a) istisna yanlış türdeyse (örneğin, bunun yerine bir Null Pointer aldıysanız) ve b) istisna hiç atılmadıysa başarısız olacaktır.
public void testFooThrowsIndexOutOfBoundsException() {
Throwable e = null;
try {
foo.doStuff();
} catch (Throwable ex) {
e = ex;
}
assertTrue(e instanceof IndexOutOfBoundsException);
}