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

如何在Cucumber中配置测试报告?附Maven/Gradle配置及自动更新指南

Cucumber 自动化测试报告集成指南

通用集成步骤

不管用Maven还是Gradle,核心流程都是这三步:

  • 添加Cucumber报告相关依赖
  • 配置测试运行时生成JSON格式的原始测试结果(可视化报告依赖此文件生成)
  • 绑定报告生成任务到测试生命周期,实现自动更新

Maven 配置示例

1. 添加依赖

在pom.xml的<dependencies>中加入:

<!-- Cucumber 核心依赖 -->
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>7.14.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>7.14.0</version>
    <scope>test</scope>
</dependency>
<!-- Cucumber 报告生成依赖 -->
<dependency>
    <groupId>net.masterthought</groupId>
    <artifactId>cucumber-reporting</artifactId>
    <version>5.7.6</version>
    <scope>test</scope>
</dependency>

2. 配置Surefire插件生成原始JSON报告

在<build><plugins>中配置maven-surefire-plugin,指定Cucumber输出JSON格式的测试结果:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.1.2</version>
    <configuration>
        <properties>
            <property>
                <name>cucumber.options</name>
                <value>
                    --plugin json:target/cucumber-reports/cucumber.json
                    --glue com.your.package.steps  <!-- 替换为你的步骤定义包路径 -->
                    src/test/resources/features  <!-- 替换为你的feature文件路径 -->
                </value>
            </property>
        </properties>
    </configuration>
</plugin>

3. 配置报告插件自动生成可视化报告

添加cucumber-reporting-maven-plugin,绑定到test阶段,每次执行mvn test后自动生成更新报告:

<plugin>
    <groupId>net.masterthought</groupId>
    <artifactId>cucumber-reporting-maven-plugin</artifactId>
    <version>5.7.6</version>
    <executions>
        <execution>
            <id>generate-report</id>
            <phase>test</phase>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <projectName>你的项目名称</projectName>
                <outputDirectory>target/cucumber-reports/html</outputDirectory>
                <jsonFiles>
                    <param>target/cucumber-reports/cucumber.json</param>
                </jsonFiles>
                <mergeFeaturesById>true</mergeFeaturesById>
                <mergeFeaturesWithRetest>true</mergeFeaturesWithRetest>
            </configuration>
        </execution>
    </executions>
</plugin>

Gradle 配置示例

1. 添加依赖

在build.gradle的dependencies中加入:

testImplementation 'io.cucumber:cucumber-java:7.14.0'
testImplementation 'io.cucumber:cucumber-junit:7.14.0'
testImplementation 'net.masterthought:cucumber-reporting:5.7.6'
testImplementation 'junit:junit:4.13.2'

2. 配置Test任务生成原始JSON报告

配置test任务,指定Cucumber的输出格式和路径:

test {
    systemProperty 'cucumber.plugin', 'json:build/cucumber-reports/cucumber.json'
    systemProperty 'cucumber.glue', 'com.your.package.steps'  // 替换为你的步骤定义包路径
    systemProperty 'cucumber.features', 'src/test/resources/features'  // 替换为你的feature文件路径
    useJUnitPlatform()
}

3. 创建报告生成任务并自动绑定

添加自定义任务generateCucumberReports,依赖test任务,每次运行测试后自动更新报告:

task generateCucumberReports(type: JavaExec) {
    dependsOn test
    mainClass = 'net.masterthought.cucumber.ReportBuilder'
    classpath = sourceSets.test.runtimeClasspath
    args = [
            'build/cucumber-reports/cucumber.json',
            'build/cucumber-reports/html',
            '-p', '你的项目名称',
            '-f', 'HTML'
    ]
}

// 绑定到test任务之后自动执行
test.finalizedBy generateCucumberReports

实现每次测试自动更新报告

关键就是把报告生成任务绑定到测试执行的生命周期:

  • Maven:通过插件的<phase>test</phase>配置,确保mvn test执行时自动触发报告生成,新报告会覆盖旧文件。
  • Gradle:通过test.finalizedBy generateCucumberReports,让测试任务完成后自动执行报告生成,同样会覆盖旧报告。

运行测试后,可视化报告的路径:

  • Maven:target/cucumber-reports/html/index.html
  • Gradle:build/cucumber-reports/html/index.html

内容的提问来源于stack exchange,提问作者Sonya Vizhanskaya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:04:56