我有一个带有以下注释的控制器
@Autowired
ServletContext servletContext;
这似乎工作正常,并正确地自动装配servlet上下文。 但是,当我尝试运行junit时,我得到以下异常:
org.springframework.beans.factory.BeanCreationException:创建名为“ControllerTest”的bean时出错:注入自动连接的依赖项失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:javax.servlet.ServletContext
奇怪的问题是,这只发生在ServletContext上,我在这个特定的控制器上有其他bean自动装配,并且单元测试适用于那些。
任何建议都会非常有帮助。
答案 0 :(得分:10)
正如@bluefoot所说,你应该使用MockServletContext
。为此,您可以实现ServletContextAware
,而不是自动连接ServletContext。当在Web应用程序上下文中运行并注入ServletContext时,Spring会注意到这一点,在JUnit测试中,您可以调用setServletContext方法来设置MockServletContext。
答案 1 :(得分:6)
好吧,你不应该在junit测试环境中有真正的ServletContext
。
您应该使用MockServletContext。