2015-05-20 41 views
0

我有一個與駱駝主要測試。我如何使用CDI與CamelTestSupport

@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以恢復數據的projet。

我不知道它爲什麼不起作用,我進一步將@RunWith(EJBContainerRunner.class)添加到測試類來運行Ejb容器。

任何想法? Thxs

+0

我發現一個Camel-cdi.jar包含一個CdiBeanRegistry和方法查找,我們如何使用它? – Kikou

回答

0

我想你可能需要擴展CdiTestSupport而不是CamelTestSupport。關鍵是找到合適的CdiContainer來使用,因爲我沒有看到EJBContainerRunner的代碼,如果CdiTestSupport不起作用,您可能需要在那裏工作。