【问题标题】:What is the proper way to test a system using Akka and RabbitMQ?使用 Akka 和 RabbitMQ 测试系统的正确方法是什么?
【发布时间】:2013-09-11 02:48:17
【问题描述】:

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

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

这听起来适合确保一切都在rabbitMQ中正常运行吗?

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

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

我有了这个想法,因为当我可以监听调试级别的日志文件队列并获得相同的信息(只要我保证我的日志记录是仅准确记录)

【问题讨论】:

    标签: unit-testing scala akka acceptance-testing scalatest


    【解决方案1】:

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

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

    Vagrant 网站:http://www.vagrantup.com/

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

    总结一下,你必须:

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

    这样您的测试将被隔离。

    希望对你有所帮助

    【讨论】:

    • 感谢您的推荐。 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多