You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus-Cucumber集成异常:IntelliJ运行与Maven报告问题

Quarkus-Cucumber 迁移问题解决方案

问题1:IntelliJ无需硬编码feature路径即可识别用例

默认情况下@RunWith(Cucumber.class)会在测试类所在包(此处为org)对应的resources目录下查找feature文件,但你的用例存放在src/test/resources/data路径下,可通过以下方式修复:

  1. 统一配置classpath相对路径
    修改CucumberOptions的features参数为classpath相对路径,兼顾IntelliJ和Maven的识别逻辑:

    @CucumberOptions(
            features = { "classpath:data" }, // 匹配data目录下所有feature文件
            plugin = {
                    "pretty",
                    "html:target/cucumber-reports/cucumber.html"
            })
    
  2. 调整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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:35:23