Quarkus-Cucumber集成异常:IntelliJ运行与Maven报告问题
Quarkus-Cucumber 迁移问题解决方案
问题1:IntelliJ无需硬编码feature路径即可识别用例
默认情况下@RunWith(Cucumber.class)会在测试类所在包(此处为org)对应的resources目录下查找feature文件,但你的用例存放在src/test/resources/data路径下,可通过以下方式修复:
统一配置classpath相对路径
修改CucumberOptions的features参数为classpath相对路径,兼顾IntelliJ和Maven的识别逻辑:@CucumberOptions( features = { "classpath:data" }, // 匹配data目录下所有feature文件 plugin = { "pretty", "html:target/cucumber-reports/cucumber.html" })调整IntelliJ运行配置
将IntelliJ Cucumber运行配置中的Feature或文件夹路径改为classpath:data,无需使用绝对路径。
问题2:Maven命令行运行生成报告并执行main方法
当前@RunWith(Cucumber.class)会让Surefire插件以JUnit测试模式运行,不会触发RunQuarkusCucumberTest的main方法,需做以下调整:
步骤1:简化测试类注解
移除@RunWith(Cucumber.class),CucumberQuarkusTest已集成Cucumber运行逻辑,无需额外JUnit运行器:
import io.quarkiverse.cucumber.CucumberOptions; import io.quarkiverse.cucumber.CucumberQuarkusTest; @CucumberOptions( features = { "classpath:data" }, plugin = { "pretty", "html:target/cucumber-reports/cucumber.html" }) public class RunQuarkusCucumberTest extends CucumberQuarkusTest{ public static void main(String[] args) { runMain(RunQuarkusCucumberTest.class, args); } }
步骤2:改用Quarkus Maven插件运行
在pom.xml的build/plugins中添加Quarkus官方插件:
<plugin> <groupId>io.quarkus</groupId> <artifactId>quarkus-maven-plugin</artifactId> <version>${quarkus.platform.version}</version> <executions> <execution> <goals> <goal>test</goal> </goals> </execution> </executions> </plugin>
步骤3:执行Maven命令
使用Quarkus插件的test目标运行,同时传递参数:
mvn quarkus:test -Durl=https://localhost:8443/ -Dexecution_mode=Headful -Dorg.slf4j.simpleLogger.defaultLogLevel=ERROR -Dcucumber.glue=org -Dcucumber.filter.tags=@DataLoader
(若需临时覆盖feature路径,可追加-Dcucumber.features=classpath:data/dir)
备选:保留Surefire插件的配置方式
升级Surefire插件版本并配置运行main方法:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> <!-- 兼容Java17和Quarkus 3.x --> <configuration> <mainClass>org.RunQuarkusCucumberTest</mainClass> </configuration> </plugin>
运行命令:
mvn test -Durl=https://localhost:8443/ -Dexecution_mode=Headful -Dorg.slf4j.simpleLogger.defaultLogLevel=ERROR -Dcucumber.glue=org -Dcucumber.features=classpath:data -Dcucumber.filter.tags=@DataLoader
额外优化点
- 修正pom.xml中
maven.compliler.target的拼写错误(应为maven.compiler.target) - 确保所有插件版本与Java17、Quarkus 3.5.1兼容
内容的提问来源于stack exchange,提问作者hytoned
相关产品推荐
相关产品推荐

