2011-03-14 43 views
13

我有以下标注春季3 - 测试控制器@Autowired Servlet上下文

@Autowired 
ServletContext servletContext; 

这似乎很好地工作,并妥善自动连接servlet上下文的控制器。 然而,当我尝试运行JUnit,我得到以下异常:

org.springframework.beans.factory.BeanCreationException:错误创建名为“ControllerTest”豆:自动装配依赖注入失败;嵌套的例外是org.springframework.beans.factory.BeanCreationException:无法自动装配领域:javax.servlet.ServletContext

奇怪的问题是,这仅与ServletContext的事,我有自动装配这个特殊的控制器上其他豆类和单元测试适用于这些。

任何建议将是非常有益的。

回答

10

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

+0

这甚至更好,谢谢krock! – tsunade21

6

那么,你不应该在junit测试环境中有一个真实的ServletContext。您可以使用MockServletContext

+4

感谢您的意见,我修正了它将下面的代码添加到其中一个xml文件中: tsunade21