我们使用Spring的DI和Camel进行路由/消息传递。我被要求为我们的各种组件设置一些(JUnit)单元测试(它们都以流水线方式将消息路由到彼此)。Apache Camel测试
采取甘德在一般Camel testing doc和Camel-Spring testing文档后,它似乎是单元测试骆驼端点的首选方法是使用像AbstractJUnit38SpringContextTests
和各种对象的子类弹簧试验语境框架。
我对这些API中的任何API都没有任何经验。所以,虽然他们为有趣的阅读做出了贡献,但是我很难将它们放到上下文中(没有双关语意思)。
因此有我挣扎了几个初步概念:
其一,什么时候适合使用MockEndpoint
,VS DataSet
,VS Test
?
此外,骆驼弹簧DOC(链接以上)提供了以下例子:
@ContextConfiguration
public class MyCamelTest extends AbstractJUnit38SpringContextTests {
@Autowired
protected CamelContext camelContext;
@EndpointInject(uri = "mock:foo")
protected MockEndpoint foo;
public void testMocksAreValid() throws Exception {
// lets add more expectations...
MockEndpoint.assertIsSatisfied(camelContext);
// now lets do some further assertions
List<Exchange> list = foo.getReceivedExchanges();
for (Exchange exchange : list) {
Message in = exchange.getIn();
...
}
}
}
如果我甚至开始了解该API的话,好像它上面的代码阅读MockEndpoint
中名为mock:foo
的所有消息...但我看不到这些消息来自哪里(他们如何到达端点首先)!
所以我的第二个问题是:确定哪些端点“存根”(模拟)的标准做法是什么?例如,如果同一个JMS消息队列被两个不同JAR/WAR内部的终端所利用:一个是制作者而另一个是消费者?在这种情况下,ProducerComponent
(居于producer.war
之内)是一个将消息推送到someQueue
的骆驼端点。并且ConsumerComponent
(居于consumer.war
之内)是消费someQueue
之外消息的另一个Camel端点。
如何组织这两个组件的单元测试?
预先感谢您在正确方向上的任何微调!
谢谢弗朗西斯! – IAmYourFaja 2011-12-19 18:04:55