我正在尝试在控制器
中对以下方法进行单元测试 @ExceptionHandler(ExceptionName.class)
@ResponseStatus(value=HttpStatus.INTERNAL_SERVER_ERROR)
public String handleIOException(ExceptionName ex, HttpServletRequest request) {
return "errors.messagepage";
}
我可以测试返回的视图名称。
我还想测试响应状态代码。我怎么能这样做?
答案 0 :(得分:5)
你不能,不能作为单元测试。注释是对框架的指令,不是可执行代码的一部分。
测试此问题的唯一方法是在测试中引导DispatcherServlet
(实际上是集成测试),或部署应用程序并通过HTTP测试它。
如果您真的想在单元测试中执行此操作,请考虑手动设置HttpServletResponse
上的响应代码,而不是使用注释:
@ExceptionHandler(ExceptionName.class)
public String handleIOException(ExceptionName ex, HttpServletRequest request, HttpServletResponse response) {
response.setStatus(500)
return "errors.messagepage";
}
答案 1 :(得分:0)
看看下面的博客。
Spring MVC: Integration Testing Controllers
详细介绍了如何在JUnit中设置模拟servlet上下文和WebApplicationContext。使用此设置,我可以使用控制器方法上的注释测试响应代码集。