我有一个实用工具方法,我想为其编写单元测试。由于此实用程序在webapp下运行,因此它旨在从WebApplicationContext获取Spring bean。(遵循代码不在单元测试下) 动作bean类
private IUnitBiz unitBiz;
public UnitBean()
{
unitBiz = CommonUtils.getBean(IUnitBiz.class);
}
在CommonUtils.class中
public static ApplicationContext getWebApplicationContext() {
return FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());
}
public static <T> T getBean(Class<T> beanType) {
return getWebApplicationContext().getBean(beanType);
}
------------------在单元测试中----------------
在单元测试中,它返回null,如何为我的单元测试初始化WebApplicationContext或getBean? 当我的新动作bean时,getBean方法返回null。
答案 0 :(得分:2)
EasyMock可能是一个解决方案。
示例:
WebApplicationContext mockWebApplicationContext = EasyMock.createMock(WebApplicationContext.class);
MockServletContext mockServletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
mockWebApplicationContext);
EasyMock.expect(mockWebApplicationContext.getServletContext()).andReturn(mockServletContext).anyTimes();
答案 1 :(得分:0)
你可以让你的测试用例扩展org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests。
通过扩展此类,您可以访问org.springframework.context.ApplicationContext的实例,该实例可以在您的实用程序方法中使用和传递... 实际上,我不知道你是否正在使用但你应该尝试spring-test,这是在JUnit测试中使用Spring的最佳方式,它与框架无关(它可以与Wicket,JSF等一起使用)。
首先应该在Maven pom.xml中包含以下依赖项:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.0.0.RELEASE</version>
<scope>test</scope>
</dependency>