我有以下簡單的控制器,以捕獲任何意外的異常:測試Spring MVC的@ExceptionHandler方法與Spring MVC的測試
@ControllerAdvice
public class ExceptionController {
@ExceptionHandler(Throwable.class)
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public ResponseEntity handleException(Throwable ex) {
return ResponseEntityFactory.internalServerErrorResponse("Unexpected error has occurred.", ex);
}
}
我想寫使用Spring MVC測試框架的集成測試。這是我到目前爲止:
@RunWith(MockitoJUnitRunner.class)
public class ExceptionControllerTest {
private MockMvc mockMvc;
@Mock
private StatusController statusController;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.standaloneSetup(new ExceptionController(), statusController).build();
}
@Test
public void checkUnexpectedExceptionsAreCaughtAndStatusCode500IsReturnedInResponse() throws Exception {
when(statusController.checkHealth()).thenThrow(new RuntimeException("Unexpected Exception"));
mockMvc.perform(get("/api/status"))
.andDo(print())
.andExpect(status().isInternalServerError())
.andExpect(jsonPath("$.error").value("Unexpected Exception"));
}
}
我在Spring MVC基礎結構中註冊ExceptionController和一個模擬StatusController。 在測試方法我設置一個期望拋出從StatusController異常。
拋出異常,但ExceptionController沒有處理它。
我希望能夠測試ExceptionController獲取異常並返回適當的響應。
有關爲什麼這不起作用以及我該如何做這種測試的想法?
謝謝。
我想在測試異常處理程序不分配,不知道爲什麼,但這是爲什麼發生,看看這個答案http:// stackoverflow。 COM /問題/ 11649036 /的ExceptionHandler - 不工作,用彈簧-MVC-3-1單元測試 – engma
關於這方面的消息?我處於同樣的情況。 – Cemo
我沒有找到解決方案。我決定,我會信任@ExceptionHandler作品和因爲該方法本身很簡單,我決定,我可以生活在沒有測試一個註解。您仍然可以使用常規單元測試來測試該方法。 – C0deAttack