Unit testing 使用Akka和RabbitMQ测试系统的正确方法是什么?

Unit testing 使用Akka和RabbitMQ测试系统的正确方法是什么?,unit-testing,scala,akka,acceptance-testing,scalatest,Unit Testing,Scala,Akka,Acceptance Testing,Scalatest,我正在使用Akka和RabbitMQ,这将成为一个大规模的应用程序 现在,对于验收和集成测试,我正在模拟通常从被测试模块发送或接收消息的参与者。实际上,只需使用完全相同的RabbitMQ队列并注入或接收数据,然后对其进行验证 这听起来适合于确保rabbitMQ中的一切正常运行吗 在另一方面,我开始使用日志队列来测试其他东西。我只是将各种日志消息发送到它,然后读取队列以了解发生了什么。例如,如果我想测试某个东西是否正在做某事,我只需粘贴一个函数LogThis(“Entered:methodname

我正在使用Akka和RabbitMQ,这将成为一个大规模的应用程序

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

这听起来适合于确保rabbitMQ中的一切正常运行吗

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

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


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

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

流浪者Maven插件:

流浪汉网站:

RabbitMQ厨师长食谱:

总结而言,您必须:

  • 安装Vagrant并创建一个空框(Centos或Ubunutu)
  • 为VM提供rabbitMQ cookbook
  • 将.box放入主文件夹(rabbitMQ.box)
  • 将maven项目配置为在集成测试的前阶段使用vagrant up(~/rabbitMQ.box)启动VM
  • 将maven项目配置为在集成测试的前阶段使用vagrant halt(~/rabbitMQ.box)停止VM
  • 这样,您的测试将被隔离


    希望这对您有所帮助

    谢谢您的推荐。=)