3

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

2 回答 2

3

您想在这里进行单元测试的具体内容是什么?因为对计时器组件进行单元测试是毫无头绪的(我的意思是对它是否被触发进行单元测试;以及它的属性是否正常工作):骆驼团队已经这样做了。

这里单元测试的逻辑是“//做一些事情”部分,你可以通过模拟端点来完成。您的第一条路线将被自动触发,而第二条路线将具有初始延迟。你至少要等这么久才能断言任何事情。在这种情况下,我通常从属性文件中读取端点属性,例如

from("timer:somethingelse?{{2nd.timer.properties}}")

并且可以设置为

2nd.timer.properties=delay=3000&period=1000 //in prod
2nd.timer.properties=delay=0 //during tests

所以那个也是在启动时触发的。希望有帮助,

格格利

于 2013-06-21T12:13:45.953 回答
2

您还可以在单​​元测试中使用通知,并在测试期间替换路由中的 from 端点 uri,例如使用直接端点,然后您可以向直接端点发送消息以触发路由运行。

请参阅 Camel 文档中有关测试的详细信息

还有 NotifyBuilder 可用于“黑盒测试”,您可以在其中断言 X 消息已被处理等

于 2013-06-25T13:22:06.033 回答