Java 如何将CDI与CamelTestSupport结合使用

Java 如何将CDI与CamelTestSupport结合使用,java,ejb,apache-camel,cdi,Java,Ejb,Apache Camel,Cdi,我有一个骆驼的主要测试 @RunWith(EJBContainerRunner.class) public class TestIntegrationBeanCtrlContrat extends CamelTestSupport { @EndpointInject(uri = "mock:result") protected MockEndpoint resultEndpoint; @Produce(uri = "direct:start") protected ProducerTempl

我有一个骆驼的主要测试

@RunWith(EJBContainerRunner.class)
public class TestIntegrationBeanCtrlContrat extends CamelTestSupport {

@EndpointInject(uri = "mock:result")
protected MockEndpoint resultEndpoint;

@Produce(uri = "direct:start")
protected ProducerTemplate template;

@Override
protected RouteBuilder createRouteBuilder() {
    return new RouteBuilder() {
        @Override
        public void configure() {

            this.from("direct:start")
                    .bean(MappingCB2ABean.class, "mapToObj")
                    .bean(BeanCalculChampsSpecif.class, "beanChampsSpecif")
                    .bean(BeanAlimContrat.class, "beanAlimentationValContrat")
                    .bean(BeanInitDateForce.class, "initialisation")
                    .bean(CtrlContratBean.class, "ctrlContrat")
                    .to("mock:result");

        }
    };
}

@Test
public void test_ControleBean_Integration() throws Exception {

    // Important : pensez à changer le nom du fichier ou répertoire où se trouve le fichier test

    this.context.getShutdownStrategy().setTimeout(3000000L);
    this.template.sendBody("direct:start", new File(
            "C:/Files/spool_in/R2-CB2A-EM22055.REMCB2A.D20140505.H103059.FORCEDT20141210"));

}

 }
每个bean都工作得很好,但是当我添加一个使用CDI组件的bean时,它就不工作了

这个bean是CtrlContratBean

public class CtrlContratBean {

@Inject
DateBusinessManager dateBusinessManager;

/**
 * Bean Ctrl Contrat
 * 
 * @param exchange
 * @return
 */
public List<ContratControllable> ctrlContrat(final Exchange exchange) {
    this.dateBusinessManager.getFirstDayOfMonth(
    Integer.valueOf(TypeCalendar.CALENDAIRE.getValueCalendar()), valueForceDt);}
公共类CtrlContratBean{
@注入
DateBusinessManager DateBusinessManager;
/**
*Bean Ctrl控件
* 
*@param交换
*@返回
*/
公共列表ctrlContrat(最终交换){
this.dateBusinessManager.getFirstDayOfMonth(
Integer.valueOf(TypeCalendar.CALENDAIRE.getValueCalendar()),valueForceDt);}
dateBusinessManager的值仍然为空。DateBusineSManager来自另一个连接到BDD以恢复数据的项目

我不知道为什么它不起作用,我进一步将@RunWith(EJBContainerRunner.class)添加到测试类以运行Ejb容器


有什么想法吗?Thxs

我认为您可能需要扩展而不是CamelTestSupport。关键点是找到要使用的正确cdi容器,因为我没有看到EJBContainerRunner的代码,如果CdiTestSupport不起作用,您可能需要在那里工作。

我发现Camel-cdi.jar包含一个带有方法查找的CdiBeanRegistry,我们如何使用信息技术