Spring 3 - 测试控制器 @Autowired Servlet Context

发布于 2024-10-22 03:56:34 字数 494 浏览 4 评论 0原文

我有一个带有以下注释的控制器

@Autowired
ServletContext servletContext;

,它似乎工作正常并且可以正确自动连接 servlet 上下文。 但是,当我尝试运行 junit 时,出现以下异常:

org.springframework.beans.factory.BeanCreationException:创建名为“ControllerTest”的 bean 时出错:自动装配依赖项注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法自动装配字段:javax.servlet.ServletContext

奇怪的问题是,这只发生在 ServletContext 上,我在这个特定的控制器上自动连接了其他 bean,单元测试对这些 bean 工作正常。

任何建议都会非常有帮助。

I have a controller with the following annotation

@Autowired
ServletContext servletContext;

which seems to work fine and to autowired the servlet context properly.
However when I try to run the junit I get the following exception:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ControllerTest': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: javax.servlet.ServletContext

The strange issue is that this only happened with ServletContext, I have other beans autowired on this particular controller and unit tests works fine for those.

Any advice would be very helpful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笛声青案梦长安 2024-10-29 03:56:34

正如 @bluefoot 所说,您应该使用 MockServletContext。为此,您可以实现 ServletContextAware。 Spring 在 Web 应用程序上下文中运行时会注意到这一点并注入 ServletContext,并且在 JUnit 测试中您可以调用 setServletContext 方法来设置 MockServletContext。

As @bluefoot states, you should use MockServletContext. For this to work, instead of auto wiring the ServletContext, you can implement ServletContextAware. Spring will notice this when running in a web application context and inject the ServletContext and in the JUnit test you can call the setServletContext method to set the MockServletContext.

﹉夏雨初晴づ 2024-10-29 03:56:34

好吧,你不应该在 junit 测试环境中拥有真正的 ServletContext 。

您应该使用 MockServletContext

Well, your're not supposed to have a real ServletContext inside a junit test ambient.

You should use MockServletContext.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文