Java Camel:异步路由的集成测试
我有一个使用apachecamel的应用程序,它使用强大的camel测试支持全面覆盖了单元测试。这些测试覆盖骆驼路线的各个部分,效果非常好 现在我想编写不模拟Camel调用的端点的集成测试。例如,我想测试应用程序的一部分,其行为如下:Java Camel:异步路由的集成测试,java,asynchronous,testing,apache-camel,integration-testing,Java,Asynchronous,Testing,Apache Camel,Integration Testing,我有一个使用apachecamel的应用程序,它使用强大的camel测试支持全面覆盖了单元测试。这些测试覆盖骆驼路线的各个部分,效果非常好 现在我想编写不模拟Camel调用的端点的集成测试。例如,我想测试应用程序的一部分,其行为如下: 在rest端点上接收请求并回复202 转换消息并将其发布到activemq上 从activemq读取消息,对其进行转换并将其推送到rest端点 测试是这样的 // start activemq, applications, etc... WebTarget tar
// start activemq, applications, etc...
WebTarget target = //initialize a JAX RS webtarget
DTO data = // generate some datas
Response r = target .path("url").request(MediaType.APPLICATION_JSON).post(Entity.json(data));
Assert.assertEquals(r.getStatus(), 202);
// stop activemq, applications, etc...
这部分很好用
现在的问题是:如果端点回复500代码,我会将错误记录在mongo数据库中。我想让我的集成测试来检查这一点
我试过这个:
// start activemq, applications, etc...
WebTarget target = //initialize a JAX RS webtarget
DTO data = // generate some datas that generate an error
Response r = target .path("url").request(MediaType.APPLICATION_JSON).post(Entity.json(data));
Assert.assertEquals(r.getStatus(), 202);
Thread.sleep(1000);
assertErrors(1); // check in mongo if error is written
// stop activemq, applications, etc...
我不喜欢线程。sleep(1000)
我的问题是:
谢谢你的建议。正如mdnghtblue在评论中提到的,NotifyBuilder是正确的答案
关于第一项,请考虑使用骆驼牌。我不知道这件事。看起来很完美!