2

我正在将 Akka 和 RabbitMQ 用于大型应用程序。

现在,对于验收和集成测试,我正在模拟通常会从被测模块发送或接收消息的参与者。实际上,只需使用完全相同的 RabbitMQ 队列并注入或接收数据,然后对其进行验证。

这听起来适合确保一切都在rabbitMQ中表现良好吗?

另一方面,我开始使用日志队列来测试其他东西。我只是将各种日志消息路由到它,然后阅读队列以了解正在发生的事情。例如,如果我想测试某事是否在做某事,我只需粘贴一个函数LogThis("Entered: Method Name"),然后读取放置消息的队列以查看它是否发生。

这听起来是个好主意吗?这个想法是即使在单元测试中我也在这样做。其他一切都被嘲笑了,但我正在使用该方法验证某些难以测试的区域的正确行为。只需读取日志数据流,看看它是否在做我想做的事。

我想到了这个想法,因为当我可以收听调试级别的日志文件队列并获得相同的信息时,它似乎比使用 Akka 测试套件遇到各种麻烦要容易得多(只要我保证我的日志记录只是准确地记录)

4

1 回答 1

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:18:03.870 回答