Spring MVC 控制器单元测试不调用@ControllerAdvice

新手上路,请多包涵

我在应用程序中有一组控制器和一个注释为 @ControllerAdvice 的类,它设置了在每个控制器中使用的某些数据元素。我正在使用 Spring MVC 3.2 并为这些控制器配备了 Junits。当我运行 Junit 时,控件不会进入 ControllerAdvice 类,如果我在 Tomcat 中部署应用程序并通过浏览器提交请求,它可以正常工作。

有什么想法吗?

原文由 Arun 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 484
1 个回答

在使用@eugene-to 和另一个类似 答案后,我发现了局限性并在 Spring 上提出了一个问题: https ://jira.spring.io/browse/SPR-12751

因此,Spring 测试引入了在 4.2 中的构建器中注册 @ControllerAdvice 类的功能。如果您使用的是 Spring Boot ,则需要 1.3.0 或更高版本。

通过这一改进,如果您使用的是独立设置,那么您可以像这样设置一个或多个 ControllerAdvice 实例:

 mockMvc = MockMvcBuilders.standaloneSetup(yourController)
            .setControllerAdvice(new YourControllerAdvice())
            .build();

注意: 名称 setControllerAdvice() 可能不会立即显而易见,但您可以将许多实例传递给它,因为它具有 var-args 签名。

原文由 Matt Byrne 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题