测试RabbitMQ和Spring集成

时间:2012-04-10 16:10:51

标签: 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执行操作并检查结果。

我知道这是非常愚蠢的,而且很高兴,但是至少它允许我做小测试。

你会推荐什么?

3 个答案:

答案 0 :(得分:1)

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

那么:你到底想要测试什么?假设您想要验证 requestChannel 上的传入消息到服务并返回,您可以直接自动装配频道(即 @Autowired private Channel requestChannel; )并在其中添加一条消息。

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

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

如果您尝试验证“bic picture”,则必须重建完整的方案。但是,对于非持久性和非持久性队列和消息,这应该不会那么复杂。

还有其他你想测试的东西吗?

答案 1 :(得分:0)

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

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

Vagrant WebSite: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 Project以在集成测试的前期阶段启动带有vagrant up(〜/ rabbitMQ.box)的VM。
  5. 在集成测试的前期阶段,将maven Project配置为使用vagrant halt(〜/ rabbitMQ.box)停止VM。
  6. 希望这个帮助

答案 2 :(得分:0)

RabbitMQ现在有一个HTTP API,因此您可以使用它而不是它的JMS

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