Quarkus开发模式下测试无法动态增删修改的问题咨询
Quarkus测试不生效问题解决方案
问题描述
使用Quarkus 3.10.2版本,基于官方示例项目搭建,仅依赖quarkus-rest-jaxb及测试依赖,遇到以下问题:
- 执行
quarkus:dev时,仅加载初始的GreetingResourceTest,新增、修改或删除测试后,即使重启进程也无法生效; - 执行
mvn clean package时,仅运行GreetingResourceTest中的测试,新增测试完全不执行。
预期符合《Quarkus-For-Spring-Developers》书中描述的持续测试功能:
要启用持续测试,返回终端执行./mvnw quarkus:dev。Quarkus横幅出现后,注意终端底部的文本:Tests paused, press [r] to resume。
返回终端,会看到Quarkus自动成功运行测试,且仅运行刚创建的测试,不会重新运行GreetingResourceTest.java类中的现有测试。
解决步骤
1. 检查测试类规范
- 测试类必须以Test结尾,比如
UserResourceTest.java,不符合命名规则的类会被Quarkus测试框架忽略; - 测试类必须放在
src/test/java目录下,包路径可与主代码对应或自定义,但不能放在主源码目录src/main/java; - 测试类必须添加
@QuarkusTest注解,这是Quarkus集成测试的核心标识,缺少该注解的类不会被识别。
2. 开发模式持续测试配置
- 打开
src/main/resources/application.properties,确认没有禁用持续测试:
若存在quarkus.test.continuous-testing=disabled,改为quarkus.test.continuous-testing=enabled或直接删除该配置; - 启动
quarkus:dev后,终端底部会显示Tests paused, press [r] to resume,按小写r恢复持续测试; - 修改测试文件并保存后,Quarkus会自动触发对应测试执行;若未触发,按大写
R强制重新扫描并运行所有测试。
3. Maven打包测试配置检查
- 打开项目
pom.xml,检查maven-surefire-plugin的配置,若存在指定仅运行GreetingResourceTest的<includes>规则,需调整为通用规则:<plugin> <artifactId>maven-surefire-plugin</artifactId> <version>${surefire-plugin.version}</version> <configuration> <!-- 确保包含所有以Test结尾的测试类 --> <includes> <include>**/*Test.java</include> </includes> </configuration> </plugin> - 执行
mvn clean test单独运行测试,查看控制台输出,确认新增测试是否被识别并执行。
内容的提问来源于stack exchange,提问作者Ed .d
相关产品推荐
相关产品推荐

