从CamelTestSupport迁移到AbstractCamelTestNGSpringContextTests

时间:2014-10-02 09:32:36

标签: apache-camel testng spring-test

我在Apache Camel上的3-4个月后一直在使用Spring 4.0.7.RELEASE 我有几个Camel 2.14.0 TestNG测试基于扩展CamelTestSupport,其中我使用了一些MockEndpoint。 我通过覆盖createRouteBuilder()方法配置了我的路由。

现在我还需要通过@Autowired注释在其中一个中注入一些Spring bean。 通过阅读http://camel.apache.org/spring-testing.html所述的内容,我了解到我现在要扩展AbstractCamelTestNGSpringContextTests,它支持@Autowired@DirtiesContext@ContextConfiguration

虽然我了解MockEndpoint方法无法再访问所有getMockEndpoint(),但使用@EndpointInject注释,我不清楚如何表达我的路线,因为createRouteBuilder()不再可用。

我看到可以通过使用注释来定义生产者和消费者,但我无法理解如何设计路径。

非常感谢社区。

1 个答案:

答案 0 :(得分:1)

除了here给出的解决方案之外,如果要初始化基于注释的Spring配置上下文而不需要额外的CamelSpringTestSupport,则可以将TestNG帮助器AnnotationConfigApplicationContext@Configuration public class MyConfig extends SingleRouteCamelConfiguration { @Bean @Override public RouteBuilder route() { return new RouteBuilder() { @Override public void configure() throws Exception { from("direct:test").to("mock:direct:end"); } }; } } 结合使用XML Spring配置文件。

使用Spring注释的Camel配置bean类:

CamelSpringTestSupport

TestNG测试类扩展MyConfig,Spring配置AnnotationConfigApplicationContext初始化为public class TestNGTest extends org.apache.camel.testng.CamelSpringTestSupport { @EndpointInject(uri = "mock:direct:end") protected MockEndpoint errorEndpoint; @Produce(uri = "direct:test") protected ProducerTemplate testProducer; @Override protected AbstractApplicationContext createApplicationContext() { return new AnnotationConfigApplicationContext(MyConfig.class); } @DirtiesContext @Test public void testRoute() throws InterruptedException { // use templates and endpoints } }

{{1}}