【发布时间】:2019-01-10 16:00:09
【问题描述】:
我正在尝试做一个简单的 spring-cloud-stream 单元测试来验证流之间的连接;基本上,处理程序可以从一个流中读取并写入另一个流。这部分工作正常。问题是应用程序的其他部分也正在启动;即rabbitMQ监听器。在另一个类中有一个方法(除了我正在测试的那个),它有@RabbitListener。这是被调用的方法。而且我确实有兔子在我的机器上本地运行,用于本地开发测试。但我不希望在测试范围内调用它。
spring-cloud-stream 测试文档here 示例有
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
我认为是 @SpringBootTest 启动了整个配置,包括 RabbitMQ 侦听器。我已经删除了 webEnvironment 参数,但这并没有什么不同。
目前,解决方法是将 spring.rabbitmq.listener.simple.auto-startup: false 放在 application.yml 中,但这不是我想要继续的各种原因,其中之一是我可能想要在某一时刻对那个 rabbitlistener 进行单元测试,尽管是在一个适当限制的测试上下文中。
我们正在使用 spring-cloud-stream 和 spring-cloud-stream-test-support 的 2.0.1 版本,尽管这似乎是一个更基本的 spring 配置问题,我不明白如何限制上下文.
【问题讨论】:
标签: spring unit-testing spring-boot spring-cloud-stream spring-config