我正在尝试做一个简单的spring-cloud-stream单元测试来验证流之间的连接;基本上,处理程序可以从一个流中读取并写入到另一个流中。这部分运行得很好。问题是,应用程序的其他部分也在启动;即rabbitMQ侦听器。在另一个类中有一个方法(除了我正在测试的那个),它有一个@RabbitListener。这就是被调用的方法。我在本地机器上运行了rabbit,用于本地开发测试。但我不希望在测试范围内调用它。
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配置问题,我不知道如何限制上下文。
发布于 2019-01-11 00:21:40
可以在autoStartup属性中使用属性占位符
spring.rabbitmq.listener.simple.auto-startup: ${auto.start:true}然后在测试用例中使用@TestPropertySource将其设置为false。
https://stackoverflow.com/questions/54132497
复制相似问题