2009-06-27 16 views

Odpowiedz

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

dostępne tylko w jUnit4 – jitter

+0

I zostały zaktualizowane to odpowiedź na to sposób, aby to zrobić w jUnit3 – j4y

+0

Dobrą rzeczą podejścia „JUnit3” jest to, że może wtedy napisać jeden wyjątek-test-case na linię, podczas gdy potrzebujesz pięciu linii dla każdego z podejściem "JUnit4". Zobacz moją odpowiedź, aby uzyskać więcej informacji: http://stackoverflow.com/a/15385613/974531 –

11

Można też rozważyć przyjrzeniu klasy ExpectedException który zapewnia bogatszą dopasowanie wyjątku.

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

Nie tylko można dopasować klasę wyjątku, ale również można zastosować niestandardowe dopasowujących się do jego wiadomości.

2

Jeśli używasz Groovy do testów na jedną stronę, możesz użyć shouldFail.

Oto przykład przy użyciu junit3 styl:

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