3

我正在使用 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 又大又棒,但至少它可以让我做一些小测试。

你会推荐什么?

4

3 回答 3

1

RabbitMQ 为您提供了一个 Webfrontend(所谓的管理视图1)。

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

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

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

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

你还有什么要测试的吗?

于 2012-09-15T21:26:27.137 回答
0

对于 rabbitMq,我的建议是使用真正的 RabbiMQ:这可以通过使用 Vagrant with chef 来配置 RabbitMq 和 Vagrant maven 插件来在集成测试之前启动 Box 并在集成测试的后期停止它:

Vagrant Maven 插件: http: //nicoulaj.github.io/vagrant-maven-plugin/

流浪者网站:http ://www.vagrantup.com/

RabbitMQ 食谱厨师:https ://github.com/opscode-cookbooks/rabbitmq

总结一下,您必须:

  1. 安装 Vagrant 并创建一个空 Box(Centos 或 Ubunutu)。
  2. 使用 rabbitMQ cookbook 配置 VM。
  3. 将 .box 放入您的主文件夹(rabbitMQ.box)。
  4. 配置您的 maven 项目以在集成测试的前期使用 vagrant up (~/rabbitMQ.box) 启动 VM。
  5. 配置您的 maven 项目以在集成测试的前期使用 vagrant halt (~/rabbitMQ.box) 停止 VM。

希望这有帮助

于 2013-09-17T13:11:17.687 回答
0

RabbitMQ 现在有一个 HTTP API,所以你可以使用它而不是它的 JMS

http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v2_8_4/priv/www/api/index.html

于 2016-08-11T08:04:49.620 回答