当前位置: 首页 > 知识库问答 >
问题:

RabbitMQ集成测试和线程

蓬英逸
2023-03-14

我通过实现MessageListener接口并设置SimpleMessageListenerContainer编写了RabbitMQ消费者。当我手动测试它时,它运行良好。现在我想编写一个联调:

  1. 创建消息
  2. 将消息推送到我的RabbitMQ服务器
  3. 等待消息被我的MessageListener实现消耗
  4. 测试做了一些断言,一旦一切都完成了

然而,由于我的MessageListener是在一个单独的线程中运行的,这使得单元测试变得困难。用一根线。在测试中睡眠等待MessageListener是不可靠的,我需要某种阻塞方法

正在设置响应队列并使用rabbitmplate。ConvertSendReceive我唯一的选择?我希望避免设置响应队列,因为它们不会在实际系统中使用。

有没有办法只用rabbitmplate就可以实现这一点。convertAndSend然后以某种方式等待我的MessageListener接收并处理消息?理想情况下,我会这样设想:

rabbitTemplate.convertAndSend("routing.key", testObject);
waitForListner() // Somehow wait for my MessageListener consume the message
assertTrue(...)
assertTrue(...)

我知道我可以直接将消息传递给我的MessageListener,而根本不需要连接到RabbitMQ,但如果可能的话,我希望测试整个系统。如果没有办法以合理的方式实现我的目标,我打算回到那个解决方案上来。

共有1个答案

戚成礼
2023-03-14

有几种方法,最简单的方法是包装您的侦听器,并传入一个由侦听器和主测试线程使用的倒计时闩锁

assertTrue(latch.await(TimeUnit.SECONDS));

您还可以传回实际收到的消息,以便验证它是否符合预期。

另请参见框架本身中的集成测试用例。

 类似资料:
  • 单元测试 单元测试仅依赖于源代码,是测试代码逻辑是否符合预期的最简单方法。 运行所有的单元测试 make test 仅测试指定的package # 单个package make test WHAT=./pkg/api # 多个packages make test WHAT=./pkg/{api,kubelet} 或者,也可以直接用go test go test -v k8s.io/kubernet

  • 英文原文:http://emberjs.com/guides/testing/integration/ 集成测试通常用来测试应用中得重要工作流。集成测试用来模拟用户交互和确认交互结果。 设置 为了对Ember应用进行集成测试,需要在测试框架中运行应用。首先需要将根元素(root element)设置为任意一个已知将存在的元素。如果根元素在测试运行时可见的话,这对测试驱动开发非常有用,带来的帮助非常

  • 需要对Oauth2客户端的集成测试的帮助。 设置: 具有受保护UI和API的客户端 完成所有密码验证并检索访问令牌的身份验证服务器 集成测试: 放心用于终点测试 在实现Oauth2之前,测试工作良好 Ole测试示例: 问题: 如何使此测试再次工作? 应如何更改res-assured设置以支持OAuth2? 是否需要模拟身份验证服务器,或者是否可以注入/mock安全上下文?

  • translated_page: https://github.com/PX4/Devguide/blob/master/en/test_and_ci/README.md translated_sha: 95b39d747851dd01c1fe5d36b24e59ec865e323e 测试与持续集成 PX4提供大量的测试和持续集成。 本页提供概述。 在本地机器上测试 下面这条命令足够打开一个带有运

  • translated_page: https://github.com/PX4/Devguide/blob/master/en/test_and_ci/continous_integration.md translated_sha: 95b39d747851dd01c1fe5d36b24e59ec865e323e PX4 Continuous Integration PX4 builds and

  • 主要内容:集成测试背后的原因,集成测试技术,集成测试方法,集成测试指南集成测试是单元测试后软件测试过程的第二个层次。在此测试中,软件的单元或单个组件在组中进行测试。集成测试级别的重点是在集成组件或单元之间交互时暴露缺陷。 单元测试使用模块进行测试,这些模块在集成测试中进行组合和测试。该软件使用许多软件模块开发,这些软件模块由不同的编码器或程序员编码。集成测试的目标是检查所有模块之间通信的正确性。 集成测试背后的原因 虽然软件应用程序的所有模块已经在单元测试中进行了测