2010-03-24 85 views
0

注入的ServletContext我需要写一个JUnit测试它运行在Tomcat一个相当复杂的应用程序。我怎么能在春天

我写建立起我的春天背景的类。

private static ApplicationContext springContext = null;

springContext = new ClassPathXmlApplicationContext( new String [] {“beans”....});

在应用程序有一个呼叫:

公共MyClass类实现ServletContextAware {

....最后字符串的文件夹= 的ServletContext.getRealPath( “/例子”); ... }

打破一切,因为ServletContext的为空。

我已开始建立一个模拟对象:

静态的ServletConfig servletConfigMock = createMock(ServletConfig.class);

静态的ServletContext servletContextMock = createMock(ServletContext.class);

@BeforeClass 公共静态无效setUpBeforeClass()抛出异常{

期望(servletConfigMock.getServletContext())andReturn(servletContextMock).anyTimes(); expect(servletContextMock.getRealPath(“/ example”))andReturn(“... fulllpath”)。anyTimes();
replay(servletConfigMock);

重播(servletContextMock);

}

有一个简单的梅索德注入ServletContext的或开始与JUnit测试的运行时部署描述符tomcat的?

我使用:春天,行家下,Tomcat 6和EasyMock的为模拟对象。

回答

3

你真正想要的是测试网络层。 有几种方法可以做到这一点:

,只要你想在测试中注入什么东西,使用ReflectionTestUtils

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

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

+0

邮件的目标是节省时间:每次更改后,我将不得不运行maven,然后启动tomcat。如果我可以使用junit测试来检查web服务(它有很多依赖关系) - 方法的功能......基本上我想等待每个函数测试的结果会更好。我将研究ReflectionTestUtils。看起来很有希望。 Thx的提示。 – 2010-03-24 10:12:43