测试 SpringCloudStream 消费者的最小上下文
Minimum Context for Testing SpringCloudStream Consumer
我正在尝试创建 junit 测试应用程序,该应用程序利用 Spring Cloud Stream 从 RabbitMQ 接收事件。在其他应用程序中,我通常导入 spring-cloud-stream-test-support
和 spring-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
})
我正在尝试创建 junit 测试应用程序,该应用程序利用 Spring Cloud Stream 从 RabbitMQ 接收事件。在其他应用程序中,我通常导入 spring-cloud-stream-test-support
和 spring-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
})