spring - 测试 RabbitMQ 和 Spring 集成

标签 spring testing integration rabbitmq

我正在使用 Spring Integration 和 RabbitMq 开发一个应用程序,我想知道如何测试它(集成测试)。

我认为 SoapUI 可以是一个很好的解决方案,但它不支持 RAbbitMq,hermesjms.com 支持 Qpid,所以我认为做一个新插件来支持 Rabbitmq 可能很容易,但它比我想象的要困难该项目有点旧并且有一堆依赖项。 所以我开始考虑自己做点什么,比如 python 中的 DSL,像这样:

tests = [{ 'name': 'start',
    'routing_key': 'returned',
    'payload' : "xxxxx",
    'timeOut' : '10000',
    'expected': '',
    'threads': '1'
},
{ 'name': 'second',.....
]

然后使用 Pika 执行操作并检查结果。

我知道它很愚蠢,而 sopaui 又大又棒,但至少它可以让我做一些小测试。

你会推荐什么?

最佳答案

RabbitMQ 为您提供了一个 Web 前端(所谓的管理 View 1)。

所以:你到底想测试什么?比方说,您想验证 requestChannel 上的传入消息是否到达服务并返回,您可以直接自动连接 channel (即 @Autowired 私有(private) channel requestChannel;) 并将消息放入其中。

但是,只有当您正确设计架构时:流程的每个步骤都可以使用模拟或经过特殊修改的注入(inject)依赖项进行测试。

除了您自己的组件之外,这些可测试性还适用于 spring 组件(接口(interface))。比方说,您已经实现了自己的路由器:测试和验证输入和输出。变压器也是如此。

如果你试图验证“bic picture”,你将不得不重建完整的场景。但是对于非持久性和非持久性队列和消息,这不应该如此复杂。

还有什么要测试的吗?

关于spring - 测试 RabbitMQ 和 Spring 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10092385/

相关文章:

mysql - 我无法使用 JAX-RS 处理异常

testing - 在 Rails3.1 中仍然收到弃用警告

testing - 当集成测试文件和单元测试文件都存在时,grails 没有找到给定包含的测试

php - 如何整合Flash和MySQL

java - 唯一约束异常 (SQLIntegrityConstraintViolationException)

java - Spring Hibernate validator 关于模型添加和更新方法的问题

spring - 如果 ActiveMQ 服务器关闭,您应该如何处理从您的应用程序向 ActiveMQ 发送 JMS 消息的重试?

testing - SpecFlow - 如何使用 NUnits TestCaseSource 属性等数据驱动测试?

iphone - 加速度计相对位置

java - C 客户端/JVM 服务器设置中双向、经过身份验证的加密连接的推荐集成机制?