gpt4 book ai didi

java - 涉及rabbitmq的集成测试

转载 作者:行者123 更新时间:2023-12-01 18:35:06 24 4
gpt4 key购买 nike

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

这是整个系统架构

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

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

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

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

谢谢巴拉。

最佳答案

在我看来,这很大程度上取决于您到底想测试什么。一般来说,您的应用程序使用者应该有一些像“onMessage”这样的方法来获取消息,这是触发您的业务流的使用者的入口点。

如果是这样,假设这个入口点是作为一个 bean 实现的,您可以将其注入(inject)到测试类中并直接调用它,有效地绕过所有的rabbitmq集成层。

此方法的一个小警告是,您必须排除在测试上下文中加载的所有与rabbit mq相关的bean。

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

但是,当您想要测试时,它会达不到要求:

  • 消息协议(protocol)(通过线路传递的消息确实正确)
  • 集成(当生产者将消息发送到某个交换器时,消费者实际收到消息)
  • 非功能测试(例如负载测试,以确保消费者不会在负载下不堪重负)

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

关于java - 涉及rabbitmq的集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60076615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com