Java 如何在Apache Camel中测试多个RouteBuilder
我想在单个单元测试中测试多个camel-RouteBuilder 我所拥有的: 更改状态的自定义camel处理器Java 如何在Apache Camel中测试多个RouteBuilder,java,unit-testing,apache-camel,Java,Unit Testing,Apache Camel,我想在单个单元测试中测试多个camel-RouteBuilder 我所拥有的: 更改状态的自定义camel处理器 public class MyProcessor implements Processor { MyState state; public MyProcessor(MyState state) {this.state = state;} @Override public void process(Exchange exchange) throws Excep
public class MyProcessor implements Processor {
MyState state;
public MyProcessor(MyState state) {this.state = state;}
@Override
public void process(Exchange exchange) throws Exception {
state.setState(state.getState() + 5);
}}
两个简单的RouteBuilder:第一个将消息从“direct:start”路由到“direct:endroute1”,第二个从“direct:endroute1”拾取消息,并将消息路由到某个地方“mock:endroute2”
为单个管线生成器编写单元测试非常简单:
public class MyTest extends CamelTestSupport {
MyState state = new MyStateImpl();
@EndpointInject(uri = "mock:result")
protected MockEndpoint resultEndpoint;
@Test
public void testSingleRoute() throws Exception {
resultEndpoint.expectedMessageCount(1);
template.sendBody("direct:start", new Object());
assertTrue(state.getState() == 5);
resultEndpoint.assertIsSatisfied();
}
@Override
protected RouteBuilder createRouteBuilder() {
return new MyRouteBuilder1(state) {
public void configure() throws Exception{
super.configure();
from("direct:endroute1").to("mock:result");
}
};
}
}
我真正想做的是以某种方式覆盖
CamelTestSupport.createRouteBuilder
,它将测试从direct:start
到mock:endroute2
的整个消息处理链。因此,state.getState()
应该是10您可以使用context.addRoutes(RouteBuilder)
API将多个RouteBuilder添加到上下文中
有关示例,请参见此单元测试:
您可以使用一个RouteBuilder替换多个其他RouteBuilder的路由。尝试重写方法:
protected RouteBuilder[] createRouteBuilders() {...}
来自CamelTestSupport。它从2.17版开始提供
protected RouteBuilder[] createRouteBuilders() {...}