2009-06-27 24 views

Trả lời

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

chỉ có sẵn trong Junit4 – jitter

+0

Tôi đã cập nhật câu trả lời này để bao gồm một cách để làm điều này trong jUnit3 – j4y

+0

Những điều tốt về cách tiếp cận "JUnit3" là bạn sau đó có thể viết một trường hợp ngoại lệ-test cho mỗi dòng, trong khi bạn cần năm dòng cho mỗi phương thức có cách tiếp cận "JUnit4". Xem câu trả lời của tôi để biết thêm thông tin: http://stackoverflow.com/a/15385613/974531 –

11

Bạn cũng có thể xem xét tham gia một cái nhìn tại các lớp ExpectedException cung cấp phù hợp ngoại lệ phong phú hơn.

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

Không chỉ bạn có thể phù hợp với lớp ngoại lệ nhưng bạn cũng có thể áp dụng quẹt tùy chỉnh để thông điệp của mình.

2

Nếu bạn đang sử dụng Groovy cho các bài kiểm tra junit, bạn có thể sử dụng shouldFail.

Dưới đây là một ví dụ sử dụng phong cách junit3:

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