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

时间:2011-03-14 15:06:32

标签: spring-mvc junit4

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

@Autowired
ServletContext servletContext;

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

  

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

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

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

2 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:6)

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

您应该使用MockServletContext