未配置Testcontainers,QuarkusTest自动启动的原因排查
排查Quarkus测试自动启动RabbitMQ容器的思路
核心原因
quarkus-smallrye-reactive-messaging-rabbitmq扩展自带DevServices特性——当@QuarkusTest运行且未配置RabbitMQ连接时,会自动触发Testcontainers启动RabbitMQ容器,这是该扩展的默认行为。
具体排查步骤
- 核对依赖版本:对比两个项目中
quarkus-smallrye-reactive-messaging-rabbitmq和Quarkus核心测试依赖的版本,部分新版本扩展才加入了自动启动容器的逻辑,旧版本可能没有。 - 检查测试上下文加载的组件:你的测试类虽然简单,但如果被测试的Endpoint或其依赖的Bean中注入了Reactive Messaging的RabbitMQ生产者/消费者,Quarkus初始化上下文时会触发扩展的容器启动逻辑;而正常项目的测试可能没加载这类组件。
- 对比配置文件:查看当前项目的
application-test.properties或application.properties,有没有quarkus.rabbitmq相关配置?比如正常项目可能加了quarkus.rabbitmq.devservices.enabled=false来禁用自动容器,而当前项目没配置。 - 分析依赖树差异:用
mvn dependency:tree分别导出两个项目的依赖树,看当前项目是否多引入了quarkus-test-rabbitmq这类会触发Testcontainers的测试依赖。 - 强制禁用DevServices:直接在测试配置里加
quarkus.rabbitmq.devservices.enabled=false,验证是否能阻止容器启动,这也是快速解决问题的临时方案。
临时解决办法
在src/test/resources/application-test.properties中添加:
quarkus.rabbitmq.devservices.enabled=false
内容的提问来源于stack exchange,提问作者Lbro
相关产品推荐
相关产品推荐

