2011-12-20 34 views
13

Tôi có thể kiểm tra xem Ngoại lệ cụ thể là không phải là được ném không?Làm cách nào để kiểm tra xem một ngoại lệ cụ thể có bị ném không?

Vòng tròn khác dễ dàng sử dụng @Test[expect=MyException].

Nhưng làm cách nào tôi có thể phủ nhận điều này?

+0

này sẽ kiểm tra, rằng ngoại lệ được ném. Nó sẽ thất bại nếu ngoại lệ không được ném. Vì vậy, nó đã làm những gì bạn muốn (?) – oers

+0

Hãy làm rõ câu hỏi của bạn – nowaq

+1

Tiêu đề của bạn (cả trước và sau khi chỉnh sửa) mâu thuẫn với văn bản câu hỏi của bạn. Cụ thể bạn đang cố gắng làm gì? –

Trả lời

17

Nếu bạn muốn kiểm tra nếu một ngoại lệ đặc biệt là không ném vào một điều kiện mà trường hợp ngoại lệ khác có thể được ném, hãy thử này:

try { 
    myMethod(); 
} 
catch (ExceptionNotToThrow entt){ 
    fail("WHOOPS! Threw ExceptionNotToThrow" + entt.toString); 
} 
catch (Throwable t){ 
    //do nothing since other exceptions are OK 
} 
assertTrue(somethingElse); 
//done! 
0

Bạn có thể làm như sau sử dụng assertj

nếu bạn muốn kiểm tra xem ngoại lệ không được ném sau đó

Throwable throwable = catchThrowable(() -> sut.method()); 

assertThat(throwable).isNull(); 

hoặc bạn mong đợi để ném

Throwable throwable = catchThrowable(() -> sut.method()); 

assertThat(throwable).isInstanceOf(ClassOfExecption.class) 
        .hasMessageContaining("expected message"); 
Các vấn đề liên quan