测试 SpringCloudStream 消费者的最小上下文

Minimum Context for Testing SpringCloudStream Consumer

我正在尝试创建 junit 测试应用程序,该应用程序利用 Spring Cloud Stream 从 RabbitMQ 接收事件。在其他应用程序中,我通常导入 spring-cloud-stream-test-supportspring-rabbit-test 并用 @SpringBootTest 注释测试 class ,我们就可以开始了。然而,@SpringBootTest 加载了整个应用程序上下文,这在这个应用程序中并不理想,因为它非常大并且需要模拟太多与测试无关的 bean。因此,我尝试通过指定要加载的 classes 来限制上下文,如下所示: @SpringBootTest(classes = {MessageProcessor.class, Consumer.class})。这似乎还不够,因为我收到 Dispatcher has no subscribers for channel 错误。

所以我的问题是,需要包含在上下文中以测试 SpringCloudStream/RabbitMQ 消费者的最少 class 是什么?

经过大量试验和错误后,测试工作的最低限度似乎如下:

@SpringBootTest(classes = {MessageProcessor.class, Consumer.class,
    org.springframework.cloud.stream.config.BindingServiceConfiguration.class,
    org.springframework.cloud.stream.test.binder.TestSupportBinderConfiguration.class
})