带有控制器建议的 Spring 模拟 MVC 单元测试

FMC*_*FMC 2 java spring unit-testing spring-mvc spring-test

我正在尝试测试我的控制器建议异常处理。我已将我的控制器建议注册到我的 mockmvc:

mockMvc = MockMvcBuilders.standaloneSetup(controller)
            .setControllerAdvice(new ExceptionHandlingControllerAdvice())
            .build();
Run Code Online (Sandbox Code Playgroud)

我可以在控制台中看到测试正在选择异常处理方法:

org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver Detected @ExceptionHandler methods in com.myapp...ExceptionHandlingControllerAdvice
Run Code Online (Sandbox Code Playgroud)

ExceptionHandlingControllerAdvice 类有一个处理安全异常的方法:

@ExceptionHandler(SecurityException.class)
Run Code Online (Sandbox Code Playgroud)

当我的单元测试抛出 SecurityException 时,测试失败并显示堆栈跟踪,而不是调用控制器建议中的处理程序方法。

我做错了什么吗?

小智 5

注释您的 Spring 模拟 mvc 测试

@ImportAutoConfiguration(YourControllerAdvice.class)
Run Code Online (Sandbox Code Playgroud)