如何对Apache Cache Timer路由进行单元测试?

时间:2013-06-21 11:52:11

标签: junit apache-camel

使用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
    }
}

2 个答案:

答案 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消息被处理等等