如何将CDI与CamelTestSupport一起使用

时间:2015-05-20 13:58:41

标签: java ejb apache-camel cdi

我对Camel进行了主要测试。

@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);}

dateBusinessManager的值仍为NULL。 dateBusinnesManager来自另一个连接到BDD以恢复数据的项目。

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

有什么想法吗? Thxs

1 个答案:

答案 0 :(得分:0)

我认为您可能需要扩展CdiTestSupport而不是CamelTestSupport。关键是要找到合适的CdiContainer,因为我没有看到EJBContainerRunner的代码,如果CdiTestSupport不起作用,你可能需要在那里工作。