我正在尝试测试我的控制器建议异常处理。我已将我的控制器建议注册到我的mockmvc:
mockMvc = MockMvcBuilders.standaloneSetup(controller)
.setControllerAdvice(new ExceptionHandlingControllerAdvice())
.build();
我可以在控制台中看到测试正在采用异常处理方法:
org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver Detected @ExceptionHandler methods in com.myapp...ExceptionHandlingControllerAdvice
ExceptionHandlingControllerAdvice类有一个安全异常的处理程序方法:
@ExceptionHandler(SecurityException.class)
当我的单元测试抛出SecurityException时,测试失败并带有堆栈跟踪,而不是在控制器通知中调用处理程序方法。
我做错了吗?
答案 0 :(得分:1)
如果您正在测试@ControllerAdvice
,我建议不要使用独立设置,而是加载完整的Spring Context duting测试:
类似的东西:
mockMvc = MockMvcBuilders
.webAppContextSetup(context)
.addFilters(springSecurityFilter)
.apply(SecurityMockMvcConfigurers.springSecurity())
.build();
答案 1 :(得分:0)
用
注释您的Spring模拟MVC测试@ImportAutoConfiguration(YourControllerAdvice.class)