【问题标题】:Spring 3 - Testing a controller @Autowired Servlet ContextSpring 3 - 测试控制器 @Autowired Servlet 上下文
【发布时间】:2011-03-14 15:06:32
【问题描述】:

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

@Autowired
ServletContext servletContext;

这似乎工作正常并正确地自动装配了 servlet 上下文。 但是,当我尝试运行 junit 时,出现以下异常:

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

奇怪的问题是这只发生在 ServletContext 上,我在这个特定的控制器上自动装配了其他 bean,并且单元测试适用于这些。

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

【问题讨论】:

    标签: spring-mvc junit4


    【解决方案1】:

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

    【讨论】:

    • 这更好,谢谢krock!
    【解决方案2】:

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

    你应该使用MockServletContext

    【讨论】:

    • 感谢您的想法,我修复了它,将以下代码添加到 xml 文件之一:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 2018-01-02
    相关资源
    最近更新 更多