2012-04-10 130 views
3

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

我认为SoapUI可以是一个很好的解决方案,但它不支持RAbbitMq,hermesjms.com支持Qpid,所以我认为可以很容易地做一个新的插件来支持Rabbitmq,但它比我想象的更困难由于该项目有点旧,并有一堆依赖项。 所以我开始觉得在做自己的东西,像Python中的DSL,是这样的:

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

然后用鼠兔执行操作和检查结果。

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

你会推荐什么?

回答

1

RabbitMQ为您提供Web前端(所谓的管理视图1)。

所以:你想测试什么?比方说,你想核实requestChannel是传入消息到服务和背部,你可以只自动装配通道直接(即@Autowired专用通道requestChannel;),并把消息到它。

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

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

如果您尝试验证“bic图片”,则必须重新构建完整场景。但是,这不应该因为非持久和非持久的队列和消息而变得如此复杂。

有什么你想测试的东西吗?

+0

嗨,感谢您的回答。我想要的是自动检查邮件是否在队列中,并且有内容,我不想测试rabbimtq。我知道网页插件,但我想自动测试。例如,您将消息发送到队列A并等待B中的消息,并且您不仅可以检查该消息是否存在,还可以检查消息头和负载。更多的东西喜欢发送消息一些费率等 我终于在python中做了一个miniframework,完成了我们需要的所有功能,我想在github中发布它一天 – 2012-09-16 07:51:25

+0

你想“监视”你的消息代理处理?哪些消息处于“队列”并且必须等待? – knalli 2012-09-16 15:49:55

0

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

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

流浪网址:http://www.vagrantup.com/

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

总结您必须:

  1. 安装Vagrant并创建一个空盒子(Centos或Ubunutu)。
  2. 用rabbitMQ食谱提供VM。
  3. 将.box放入您的主文件夹(rabbitMQ.box)。
  4. 配置你的maven项目启动虚拟机vagrant up(〜/ rabbitMQ。盒)在整合测试的预先阶段。
  5. 配置你的maven项目,在集成测试的预置阶段停止虚拟机vagrant halt(〜/ rabbitMQ.box)。

希望这有助于