Quarkus配置指定测试不生效,执行mvn test总是运行全部测试
问题分析与解决
你的问题核心在于测试配置文件的位置错误,以及对Quarkus测试阶段配置加载逻辑的误解,具体原因和解决方法如下:
1. 配置文件放错目录
Quarkus的测试阶段只会优先读取src/test/resources/application.properties中的配置,而你把quarkus.test.profile.tags=MySQLContainer写在了src/main/resources/application.properties里——这个目录的配置是给应用运行时用的,测试阶段不会加载它,所以直接运行mvn test时不会触发标签过滤,自然会执行所有测试。
解决方法:
- 将
quarkus.test.profile.tags=MySQLContainer移动到src/test/resources/application.properties中,再运行mvn test就能生效。
2. 本地与流水线的差异化配置实现
要满足本地跑全量测试、流水线跳过TestContainers测试的需求,推荐用多环境配置文件实现:
- 本地测试:无需额外配置,直接运行
mvn test即可执行所有测试(无标签过滤时默认跑全部) - 流水线测试:创建专属配置文件控制标签过滤
- 在
src/test/resources下新建application-pipeline.properties,添加配置:quarkus.test.profile.tags=H2 - 流水线中执行测试时,激活该配置文件:
mvn test -Dquarkus.profile=pipeline
- 在
3. 额外验证点
确保你的@TestProfile实现类正确绑定了标签:
public class QuarkusTag implements TestProfile { @Override public Set<String> tags() { return Collections.singleton("H2"); } } public class ContainerTag implements TestProfile { @Override public Set<String> tags() { return Collections.singleton("MySQLContainer"); } }
同时确认测试类上的注解关联正确:
@TestProfile(QuarkusTag.class) public class H2RelatedTest { // ...测试代码 } @TestProfile(ContainerTag.class) public class MySQLContainerTest { // ...测试代码 }
内容的提问来源于stack exchange,提问作者Juan Antonio Jiménez Torres
相关产品推荐
相关产品推荐

