gpt4 book ai didi

spring - IntelliJ runner 上的集成测试通过但在 gradle 上没有通过

转载 作者:行者123 更新时间:2023-12-03 05:46:37 28 4
gpt4 key购买 nike

我们正在使用 spring-cloud-stream 进行一个项目。 , 与 rabbitmq作为消息代理和gradle .

出于测试目的,我们正在运行一个带有 rabbitmq 实例的 docker 容器。

应用程序.yaml:

spring
rabbitmq:
host: localhost

我有这个测试:
@DirtiesContext(classMode = BEFORE_EACH_TEST_METHOD)
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = RANDOM_PORT)
public class TasksProcessorIT {

@Test
public void shouldConsumeDeleteUserTask() {
userRepository.insert(INITIAL_USER).block();
final AtomicReference<Message<?>> msgRef = new AtomicReference<>();
inboundEventsChannel.subscribe(msgRef::set);

outboundTasksChannel.send(DELETE_USER_TASK);
await().atMost(FIVE_SECONDS)
.untilAtomic(msgRef, notNullValue());

final Message<?> receivedEvent = msgRef.get();
assertNotNull(receivedEvent);
assertEquals(USER_DELETED, typeHeader(receivedEvent));
assertNull(userRepository.findAll().blockFirst());
}
}

它通过在 Intelij Runner 上运行,但在调用 gradle test 时失败, 我想知道为什么...

这是记录的原因:
Caused by: org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers

最佳答案

问题可能是您在不同测试之间的 RabbitMQ 队列中有一些数据,但是由于您完全在测试方法中订阅了 channel ,这可能已经晚了,因为监听器容器已经从队列。

考虑在测试之间清理队列以进行测试。

关于spring - IntelliJ runner 上的集成测试通过但在 gradle 上没有通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49913363/

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