在Fitnesse进行Spring MVC测试
Fitnesse与Spring MVC集成有一个问题。
我的测试用例是身份验证:
我有一个加载spring上下文的通用Fixture:
public abstract class GenericSpringFixture extends GenericBelFixture {
protected static AutowireCapableBeanFactory beanFactory;
protected static ClassPathXmlApplicationContext context;
static {
initSpring();
}
public static void initSpring() {
if ((context == null) || !context.isActive()) {
context = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-fitnesse-common.xml");
beanFactory = context.getAutowireCapableBeanFactory();
}
}
public GenericSpringFixture() {
beanFactory.autowireBeanProperties(this, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true);
}
public static AutowireCapableBeanFactory returnBeanFactory() {
return beanFactory;
}
}
applicationContext-fitnesse-common.xml文件正在加载我的plateform的所有依赖关系,这包括我的servlet(Spring Mvc文件)配置。
我的夹具代码是:
public class IdentificationUtilisateur extends GenericSpringFixture{
@Autowired
private WebApplicationContext webApplicationContext;
@Autowired
private FilterChainProxy springSecurityFilterChain;
private MockMvc mockMvc;
public void seLogerAvecIdentifiantEtMotDePasse(String identifiant,
String motDePasse) {
this.mockMvc = MockMvcBuilders
.webAppContextSetup(this.webApplicationContext)
.addFilters(this.springSecurityFilterChain).build();
}
public void accesReussi() throws Exception{
mockMvc.perform(
post("/j_spring_security_check")
.param("j_username", "bilal")
.param("j_password", "Pa1234567"));
}
}
问题在于Spring无法找到任何webApplicationContext。
org.springframework.beans.factory.BeanCreationException:创建名为'ma.awb.ebk.bel.web.fixture.authentication.IdentificationUtilisateur'的bean时出错:注入自动装配依赖失败; 嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装入字段:private org.springframework.web.context.WebApplicationContext ma.awb.ebk.bel.web.fixture.authentication.IdentificationUtilisateur.webApplicationContext; 嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到符合依赖关系的[org.springframework.web.context.WebApplicationContext]类型的限定bean:预计至少有1个bean可以作为此依赖关系的自动连线候选。 依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}
My Slim fixture和我的测试Spring mvc唯一的区别是在我的测试MVC中,我在junit上下文中,并且在Junit测试中启用了此注释:
@WebAppConfiguration
谢谢你的帮助 。
您在GenericSpringFixture中创建了一个applicationContext,但它不能在IdentificationUtilisateur中自动装配组件。
如果你使用@RunWith(SpringJUnit4ClassRunner.class)注释你的测试类,但是我不确定它是否适用于你的FitNess类,@Autowire可以工作。
也许你需要手动注入它们:
private WebApplicationContext webApplicationContext = GenericSpringFixture.context()
Update1(没注意到autowired代码片段):看来ClassPathXmlApplicationContext不是WebAppliactionContext。 怎么样设置一个XmlWebApplicationContext呢?
链接地址: http://www.djcxy.com/p/67725.html上一篇: Spring MVC Test In Fitnesse
下一篇: how to proxy an interface using spring like spring data jpa?