涉及rabbitmq的集成测试

问题描述 投票:0回答:1

我需要有关如何编写涉及RabbitMQ消息代理的集成测试的帮助。

这是整体系统架构

服务(生产者)->消息Borker(环境1)->控制器(我们的应用程序)->消息代理(环境2)->消费者设备

我计划将集成测试程序放在服务级别,在该级别我将模仿要发送到消息代理的消息。稍后,我将监听响应并断言。

尽管它是一个异步系统,但是测试同步方式似乎是一个简单的方法。

有没有更好的方法可以对我的应用程序流程进行集成测试。您能否给我一些集成测试的指导。

谢谢巴拉。

java spring rabbitmq
1个回答
0
投票

IMO几乎完全取决于您要测试的内容。通常,您的应用程序使用者应具有某种类似“ onMessage”的方法来获取消息,这是使用者触发业务流程的切入点。

如果是这样,假设将此入口点实现为bean,则可以将其注入测试类,并直接有效地绕过所有Rabbitmq集成层直接调用它。

使用此方法的一个小警告是,您必须从测试上下文中加载所有与兔子mq相关的bean。

现在,这种方法可以让您测试单个服务的业务逻辑,这很好。

但是,当您要测试时,它不够用:

  • 消息协议(通过电线传递的消息确实正确)
  • 集成(当生产者将消息发送到某个交易所时,消费者实际上得到了消息)
  • 非功能测试(例如负载测试,以确保消费者在负载下不会不知所措)

为了解决这些问题,您可能要考虑使用RabbitMQ和服务部署整个环境,并使用域知识来正确断言(例如,当使用者获取消息并对其进行处理时-它会更新数据库),因此您可以进行测试等待X秒钟,然后直接轮询数据库或通过调用服务公开的一些API来轮询数据库。

© www.soinside.com 2019 - 2024. All rights reserved.