我如何在春季注入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层。 有几种方法可以做到这一点:

  • 使用spring提供的MockServletContext 。 这是最好的方法 - 检查链接的文档以了解如何执行此操作。
  • 从HtmlUnit使用ServletUnit
  • 使用仙人掌框架
  • 使用硒在功能上测试网层
  • 像你一样做一个运行时模拟
  • 无论何时你想在测试中注入某些东西,都可以使用ReflectionTestUtils

    并发症来自web层不太适合单元测试的事实。 它更多是功能测试的主题。

    如果有些方法似乎适合单元测试,它们可能属于服务层。 他们不应该依赖于ServletContext

    链接地址: http://www.djcxy.com/p/64097.html

    上一篇: How can i inject servletcontext in spring

    下一篇: Junit 4 test suite and individual test classes