gpt4 book ai didi

java - 为 Junit 使用 spring-rabbit-test

转载 作者:行者123 更新时间:2023-11-30 10:18:40 25 4
gpt4 key购买 nike

我正在尝试为 rabbitMq 监听器编写一个测试用例。我尝试使用 spring-rabbit-test 并在运行测试时出现以下错误:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2018-03-06 17:10:50.113 ERROR 14239 --- [ main] o.s.boot.SpringApplication
: Application run failed

java.lang.IllegalStateException: Another endpoint is already registered with id 'response_queue' at org.springframework.util.Assert.state(Assert.java:73) ~[spring-core-5.0.4.RELEASE.jar:5.0.4.RELEASE] at org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry.registerListenerContainer(RabbitListenerEndpointRegistry.java:151) ~[spring-rabbit-2.0.2.RELEASE.jar:2.0.2.RELEASE]

我正在关注 [ https://docs.spring.io/spring-amqp/reference/htmlsingle/#testing]在他们分享的示例中,在理想情况下,监听器没有 @Component,它将成为一个组件。

现在我的测试类也试图让监听器导致上述错误。

有人可以帮助我吗?

测试配置

@Configuration    
@RabbitListenerTest
public class RabbitMQTestConfig {
@Autowired
MyListener myListener;
}

测试

@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@SpringBootTest
public class RabbitMQTest {

@Rule
public BrokerRunning brokerRunning = BrokerRunning.isRunning();

@Autowired
private RabbitListenerTestHarness harness;

@Test
public void testMyListener() {

}

}

监听器

@Component
public class MyListener {

@Autowired
MyService myService;


@RabbitListener(id = "response_queue", queues = "response")
public void processOrder(SomeResponse someResponse) {
myService.process(someResponse);
}
}

最佳答案

是的...您需要与我们分享您的项目。它的简单变体让我们重现和播放以确定原因。

现在我无法使用非常简单的 Spring Boot 应用程序重现它:

@SpringBootApplication
public class So49129095Application {

public static void main(String[] args) {
SpringApplication.run(So49129095Application.class, args);
}
}

@Component
public class MyListener {

@RabbitListener(id = "response_queue", queuesToDeclare = @Queue("response"))
public void processOrder(Object payload) {

}

}

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {So49129095Application.class, So49129095ApplicationTests.RabbitMQTestConfig.class})
public class So49129095ApplicationTests {

@Rule
public BrokerRunning brokerRunning = BrokerRunning.isRunning();

@Autowired
private RabbitListenerTestHarness harness;

@Test
public void testMyListener() {

}

@Configuration
@RabbitListenerTest
public static class RabbitMQTestConfig {

@Autowired
MyListener myListener;

}

}

对我来说,我没有遗漏任何关于如何一起配置的观点。

关于java - 为 Junit 使用 spring-rabbit-test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49129095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com