如何在使用bean的camel单元测试中注册bean?

时间:2014-04-17 13:49:05

标签: java junit apache-camel guice jukito

我想对在java中使用bean配置的单个路由进行单元测试。我在骆驼的行动中读到(第6.1.4章)如何做到这一点:

protected RouteBuilder createRouteBuilder() throws Exception {
    return new myRoute();
}

但在我的情况下,溃败需要注册一些bean。我知道如何在独立应用程序中注册bean:see here 但是如何在“CamelTestSupport”中注册bean?有没有办法在没有注册表的情况下使用bean?可能通过注入它们(所有bean都没有arg构造函数)?我正在使用Guice,在我的测试中,我正在使用Jukito(Guice + Mockito)。

2 个答案:

答案 0 :(得分:7)

您需要覆盖createRegistry()方法

@Override
protected JndiRegistry createRegistry() throws Exception {
    JndiRegistry jndi = super.createRegistry();

    //use jndi.bind to bind your beans

    return jndi;
}

@Test
public void test() {
    //perform test
}

答案 1 :(得分:2)

不,你不能在没有注册表的情况下使用bean。

您需要使用注册表来保存bean实例,否则Camel无法为您查找bean。如果您的测试类扩展了CamelTestSupport,您只需要覆盖createRegistry()方法以使用您的bean设置正确的注册表。