2009-06-27 14 views

risposta

7

Junit4:

@Test(expected = org.dom4j.DocumentException.class) 
void shouldThrowException() { 
    getFile(null); 
} 

junit3:

void testShouldThrowException() { 
    try { 
     getFile(null); 
     fail("Expected Exception DocumentException"); 
    } catch(DocumentException e) {} 
} 
+1

disponibile solo in Junit4 – jitter

+0

Ho aggiornato questa risposta per includere un modo per fare questo in jUnit3 – j4y

+0

La cosa buona di un approccio "JUnit3" è che si può quindi scrivere un caso di prova di eccezione per riga, mentre per l'approccio "JUnit4" occorrono cinque righe. Vedere la mia risposta per ulteriori informazioni: http://stackoverflow.com/a/15385613/974531 –

11

Si potrebbe anche prendere in considerazione uno sguardo alla classe ExpectedException che fornisce più ricca corrispondenza eccezione.

https://github.com/junit-team/junit/wiki/Exception-testing

Non solo è possibile abbinare la classe di eccezione, ma anche è possibile applicare matchers personalizzati per il suo messaggio.

2

Se si utilizza Groovy per i test di junit, è possibile utilizzare shouldFail.

Ecco un esempio utilizzando lo stile junit3:

void testShouldThrowException() { 
    def message = shouldFail(DocumentException) { 
     documentService.getFile(null) 
    } 
    assert message == 'Document could not be saved because it ate the homework.' 
}