Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Fitnesse中的弹簧MVC测试_Spring_Spring Mvc_Fitnesse_Spring Mvc Test - Fatal编程技术网

Spring Fitnesse中的弹簧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

我对Fitnesse与Spring MVC的集成有一个问题

我要测试的用例是身份验证:

我有一个加载弹簧上下文的通用夹具:

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;