我在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(
)不再可用。
我看到可以通过使用注释来定义生产者和消费者,但我无法理解如何设计路径。
非常感谢社区。 p>
答案 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}}