我正在尝试为 Spring RabbitMQ 应用程序编写一些测试。
从文档,我找到了使用 RabbitListenerTestHarness 的示例。
我在春天创建了一个测试,如下所示:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyMain.class)
public class MyClassTest {
@Test
public void myTest(){
RabbitProperties.Listener listener = harness.getSpy("test_consumer2");
}
}
在源代码中,我有一个为rabbitmq创建配置的bean,它带有注释
@RabbitListenerTest(capture = true, spy = true)
。
此外,在源中我有以下消费者:
@Component
公共类 TestConsumerStub {
@RabbitListener(
id = "test_consumer2",
queues = "my_queue"
)
public void testHandler(){
}
由于某种原因,测试中的线束 (
RabbitListenerTestHarness harness
) 对象未加载到消费者的上下文中。以下变量为空:
RabbitProperties.Listener listener = harness.getSpy("test_consumer2");
知道我错过了什么吗?
调试
RabbitListenerTestHarness
bean 后,我找出了问题所在。我使用 spring-boot-starter-amqp
表示 Spring Rabbit,对于 spring-rabbit-test
,我明确编写了版本,该版本与 spring-amqp
的版本不匹配。我将 spring-boot-starter-parent
版本更新为 1.4.0
,正在安装 spring-ampq
版本 1.6.1
,这与我的 spring-rabbit-test
版本相同。
对于所有调试相同问题的人:检查您的侦听器是否已指定
id
!