使用Apache Camel 2.9.1
如何对以下内容进行单元测试?
public class MyRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer.something?delay=0?repeatCount=1")
// do some stuff
.to("{{some.endpoint}}")
.end()
from("timer.somethingelse?delay=3000&period=1000")
// do some stuff
.to("{{some.other.endpoint}}")
.end
}
}
答案 0 :(得分:3)
您想在这里进行单元测试是什么? 因为单元测试定时器组件是无能为力的(我的意思是单元测试是否被触发;以及它的属性是否正常工作):Camel团队已经做到了。
单元测试的逻辑是什么是“// do some stuff”部分,你可以通过模拟端点来完成。您的第一条路线将自动开启,而第二条路线则会有初始延迟。你必须等到那么多,至少要断言什么。在这种情况下,我通常从属性文件中读取端点属性,如
from("timer:somethingelse?{{2nd.timer.properties}}")
可以设置为
2nd.timer.properties=delay=3000&period=1000 //in prod
2nd.timer.properties=delay=0 //during tests
因此在启动时也会触发一个。希望有所帮助,
盖尔盖伊
答案 1 :(得分:1)
您还可以在单元测试中使用建议,并在测试期间替换路由中的from端点uri,例如使用直接端点,然后您可以向直接端点发送消息以触发路由运行。
请参阅Camel文档中有关测试的详细信息
还有NotifyBuilder可以用于“黑盒测试”,你可以断言X消息被处理等等