Spring Fitnesse中的弹簧MVC测试
我对Fitnesse与Spring MVC的集成有一个问题 我要测试的用例是身份验证: 我有一个加载弹簧上下文的通用夹具:Spring Fitnesse中的弹簧MVC测试,spring,spring-mvc,fitnesse,spring-mvc-test,Spring,Spring Mvc,Fitnesse,Spring Mvc Test,我对Fitnesse与Spring MVC的集成有一个问题 我要测试的用例是身份验证: 我有一个加载弹簧上下文的通用夹具: public abstract class GenericSpringFixture extends GenericBelFixture { protected static AutowireCapableBeanFactory beanFactory; protected static ClassPathXmlApplicationContext context; s
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文件正在加载我的平台的所有依赖项,其中包括我的servletSpring 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:错误
创建名为的bean
'ma.awb.ebk.bel.web.fixture.authentication.IdentificationUtilitySatur':
自动连线依赖项的注入失败;嵌套异常是
org.springframework.beans.factory.BeanCreationException:无法
自动连线字段:专用
org.springframework.web.context.WebApplicationContext
ma.awb.ebk.bel.web.fixture.authentication.IdentificationUtilitySateur.webApplicationContext;
嵌套异常是
org.springframework.beans.factory.noSuchBean定义异常:否
类型的限定bean
找到的[org.springframework.web.context.WebApplicationContext]
依赖项:至少需要1个符合autowire条件的bean
此依赖项的候选项。依赖项批注:
{@org.springframework.beans.factory.annotation.Autowiredrequired=true}
Slim fixture和test Spring mvc之间的唯一区别在于,在我的测试mvc中,我处于junit上下文中,并且在junit测试中启用了此注释:
@WebAppConfiguration
谢谢你的帮助 您可以在GenericsSpringFixture中创建applicationContext,但它无法在IdentificationUtilityStatur中自动关联组件 @如果您使用@RunWithSpringJUnit4ClassRunner.class注释测试类,Autowire会起作用,但我不确定它是否适用于健身类 也许您需要手动注入它们:
private WebApplicationContext webApplicationContext = GenericSpringFixture.context()
Update1未注意到自动连接的代码段:
ClassPathXmlApplicationContext似乎不是WebAppliactionContext。改为设置XmlWebApplicationContext如何?GenericSpringFixture中的这一行用于启用注释===>beanFactory.AutowireBeanProperties此,AutowireCapableBeanFactory.AUTOWIRE按类型,true;我可以通过@Autowired访问我的所有服务、存储库、组件,但WebApplicationContextGenericSpringFixture.context建议无效,我无法将ClassPathXmlApplicationContext转换为WebApplicationContext抱歉,我的错误没有注意到beanFactory.AutowireBeanProperties此,AutowireCapableBeanFactory.AUTOWIRE按类型,true;