JUnit测试隔离的路由

时间:2013-03-05 19:57:47

标签: java apache-camel

我正在创建一个Camel应用程序。我有一系列通过直接通道连接的路线。所以...

  • RouteAdirect:1读取并写入direct:2
  • RouteBdirect:2读取并写入direct:3
  • RouteCdirect:3读取并写入direct:4

我正在使用Java DSL来创建路由。上下文是在Spring中创建的,路由使用Spring上下文中bean的引用。

我的问题是,隔离测试每条路线的最佳方法是什么。我可以在单独的RouteBuilder中创建每个路由,但是spring中的上下文将包含所有三个路由构建器,因此不起作用。

一种想法是将所有Spring bean放在一个上下文文件中,然后使用仅加载单个RouteBuilder的特定于测试的上下文文件。这个问题是,如果配置文件中的camelContext中设置了其他内容(错误处理程序,拦截器等),则存在复制/粘贴错误的可能性。

是否有办法创建默认的camel上下文,链接spring应用程序上下文并加载单个RouteBuilder?这与测试特定的xml文件具有相同的问题,但至少没有额外的xml文件。

还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

如果您只需要对每条路线进行黑盒测试,那么只需使用Camel的AdviceWith支持来隔离每条路线的输入/输出......

特别是看看interceptSendToEndpoint()API ...应该允许你拦截路由之间的消息发送,并在预期的输出上断言等。