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

求助:Karate中Feature文件无法生成预期Cucumber报告

搞定Karate无法生成预期Cucumber报告的问题

先帮你把代码里截断的部分补全,然后一步步排查问题:

先修复你代码里的截断部分

你的generateReport方法里代码没写完,补全后应该是这样:

private static void generateReport(String karateOutputPath) {
    Collection<File> jsonFiles = FileUtils.listFiles(new File(karateOutputPath), new String[] {"json"}, true);
    List<String> jsonPaths = new ArrayList<String>(jsonFiles.size());
    jsonFiles.forEach(file -> jsonPaths.add(file.getAbsolutePath()));
    
    // 配置报告生成路径和项目名称
    Configuration config = new Configuration(new File("target/cucumber-reports"), "你的Karate测试项目");
    ReportBuilder reportBuilder = new ReportBuilder(jsonPaths, config);
    reportBuilder.generateReports();
}

接下来排查几个常见的坑

1. 你的CucumberOptions配置缺了关键项

你现在只加了tags = "~@ignore",但没指定Feature文件的位置,Karate根本找不到要执行的用例,自然不会生成报告。得加上features路径,还得指定生成json格式的报告(这是生成Cucumber报告的基础):

@CucumberOptions(
    features = "classpath:Mav_demo/RunnerFunction", // 指向Feature文件所在的包(classpath下的路径,不用加src/test/java)
    tags = "~@ignore",
    plugin = {"pretty", "json:target/surefire-reports/cucumber.json"} // 强制生成json报告文件
)

2. 检查pom依赖是否匹配

Karate和cucumber-reporting的版本得兼容,给你一份靠谱的依赖配置:

<dependencies>
    <!-- Karate核心依赖,用最新稳定版 -->
    <dependency>
        <groupId>com.intuit.karate</groupId>
        <artifactId>karate-junit4</artifactId>
        <version>1.4.1</version>
        <scope>test</scope>
    </dependency>
    <!-- Cucumber报告生成工具 -->
    <dependency>
        <groupId>net.masterthought</groupId>
        <artifactId>cucumber-reporting</artifactId>
        <version>5.7.0</version>
        <scope>test</scope>
    </dependency>
    <!-- 文件操作需要的commons-io -->
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.11.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

3. Feature文件的位置要对

你的测试类在Mav_demo.RunnerFunction包下,Feature文件最好放在src/test/resources/Mav_demo/RunnerFunction目录下(maven会把resources下的内容放到classpath里),或者如果放在src/test/java的对应包下,也要确保maven能识别为资源文件。

4. 确认测试真的跑起来了

如果测试没执行,肯定没报告。运行testParallel方法后,看看控制台输出,有没有显示Feature文件里的场景被执行。要是没执行,检查:

  • Feature文件是不是以.feature结尾
  • Feature里的标签是不是和你@CucumberOptions里的tags匹配(比如你排除了@ignore,那没被标记的场景应该被执行)

给你一份完整的Runner类参考

package Mav_demo.RunnerFunction;

import com.intuit.karate.cucumber.CucumberRunner;
import com.intuit.karate.cucumber.KarateStats;
import net.masterthought.cucumber.Configuration;
import net.masterthought.cucumber.ReportBuilder;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import static org.junit.Assert.assertTrue;

import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import cucumber.api.CucumberOptions;

@CucumberOptions(
    features = "classpath:Mav_demo/RunnerFunction",
    tags = "~@ignore",
    plugin = {"json:target/surefire-reports/cucumber.json"}
)
public class Looping {

    @Test
    public void testParallel() {
        String karateOutputPath = "target/surefire-reports";
        KarateStats stats = CucumberRunner.parallel(getClass(), 5, karateOutputPath);
        generateReport(karateOutputPath);
        assertTrue("有测试场景失败", stats.getFailCount() == 0);
    }

    private static void generateReport(String karateOutputPath) {
        Collection<File> jsonFiles = FileUtils.listFiles(new File(karateOutputPath), new String[] {"json"}, true);
        List<String> jsonPaths = new ArrayList<>(jsonFiles.size());
        jsonFiles.forEach(file -> jsonPaths.add(file.getAbsolutePath()));

        // 配置报告的输出目录和项目名称,还可以加一些自定义分类
        Configuration config = new Configuration(new File("target/cucumber-reports"), "我的Karate API测试");
        config.addClassifications("环境", "QA");
        config.addClassifications("类型", "接口测试");

        ReportBuilder reportBuilder = new ReportBuilder(jsonPaths, config);
        reportBuilder.generateReports();
    }
}

最后看报告的方法

运行测试后,打开target/cucumber-reports/index.html就能看到完整的Cucumber报告了,里面会有Feature文件的执行详情、步骤结果、失败原因这些内容。

内容的提问来源于stack exchange,提问作者Preethi Ravi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:54:07