我如何在春季注入servletcontext
我需要为一个在tomcat上运行的相当复杂的应用程序编写junit测试。
我写了一个建立我的春天背景的课程。
private static ApplicationContext springContext = null;
springContext = new ClassPathXmlApplicationContext(new String [] {“beans”....});
在应用程序中有一个电话:
公共类myClass实现ServletContextAware {
.... final String folder = servletContext.getRealPath (“/ example”); ...}
这打破了一切,因为ServletContext是空的。
我已经开始构建一个模拟对象:
静态ServletConfig servletConfigMock = createMock(ServletConfig.class);
static ServletContext servletContextMock = createMock(ServletContext.class);
@BeforeClass public static void setUpBeforeClass()throws Exception {
期待(servletConfigMock.getServletContext())andReturn(servletContextMock).anyTimes()。 期望(servletContextMock.getRealPath( “/示例”))andReturn( “... fulllpath”)anyTimes()。;
重放(servletConfigMock);
重放(servletContextMock);
}
有没有一种简单的方法来注入ServletContext或在junit测试的运行时用部署描述符启动tomcat?
我正在使用:spring,maven,tomcat 6和easymock模拟对象。
你真正想要的是测试web层。 有几种方法可以做到这一点:
MockServletContext
。 这是最好的方法 - 检查链接的文档以了解如何执行此操作。 无论何时你想在测试中注入某些东西,都可以使用ReflectionTestUtils
并发症来自web层不太适合单元测试的事实。 它更多是功能测试的主题。
如果有些方法似乎适合单元测试,它们可能属于服务层。 他们不应该依赖于ServletContext