Hoe kan ik JUnit4 idiomatisch gebruiken om te testen of sommige code een exception gooit?
Hoewel ik zeker iets als dit kan doen:
@Test
public void testFooThrowsIndexOutOfBoundsException() {
boolean thrown = false;
try {
foo.doStuff();
} catch (IndexOutOfBoundsException e) {
thrown = true;
}
assertTrue(thrown);
}
Ik herinner me dat er een annotatie of een Assert.xyz of iets is dat veel minder kludgy is en veel meer in de geest van JUnit voor dit soort situaties.
JUnit 4
heeft hier ondersteuning voor:
@Test(expected = IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {
ArrayList emptyList = new ArrayList();
Object o = emptyList.get(0);
}
Referentie :
Wat dacht je hiervan: Vang een zeer algemene exception, zorg ervoor dat het uit het vangblok komt, assert dan dat de klasse van de exception is wat je verwacht dat het is. Deze assert zal falen als a) de exception van het verkeerde type is (bv. als je een Null Pointer hebt) en b) de exception nooit gegooid is.
public void testFooThrowsIndexOutOfBoundsException() {
Throwable e = null;
try {
foo.doStuff();
} catch (Throwable ex) {
e = ex;
}
assertTrue(e instanceof IndexOutOfBoundsException);
}