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

如何通过Java代码编程运行Karate feature文件并正常生成报告

Java 编程运行 Karate Feature 并生成测试报告方案

直接使用 Karate 原生的 Runner API 执行即可,不需要依赖 JUnit 执行链路,原生支持报告自动生成,核心实现如下:

  • 首先调整依赖配置:将 karate-core 依赖的作用域从默认的test调整为可在主代码中引用,建议使用1.4.0及以上稳定版本,避免低版本的API兼容问题。
  • 核心运行代码示例:
import com.intuit.karate.Results;
import com.intuit.karate.Runner;
import java.io.File;

public class KarateCustomRunner {
    /**
     * 对外暴露的调用入口,接收到运行请求时直接调用该方法
     * @param featurePath feature文件路径,支持classpath路径或磁盘绝对路径
     * @return 执行结果对象,可获取通过率、失败详情等数据
     */
    public static Results executeFeature(String featurePath) {
        Results results = Runner.path(featurePath)
                .outputCucumberJson(true)
                .outputHtmlReport(true)
                .outputJunitXml(false) // 按需开启,生成JUnit格式XML报告供CI识别
                .parallel(1); // 单线程执行,需要并发可调整对应线程数

        // 打印报告存储路径
        File reportDir = new File(results.getReportDir());
        System.out.println("执行完成,报告存储路径:" + reportDir.getAbsolutePath());
        System.out.println("总场景数:" + results.getScenariosTotal() + ",失败数:" + results.getFailCount());
        
        return results;
    }
}

之前通过编程触发JUnit运行方式无法生成报告的核心原因:Karate的JUnit执行器将报告生成逻辑绑定在JUnit的测试生命周期回调上,手动编程调用JUnit执行器时不会触发这些生命周期钩子,自然不会落盘生成报告文件。

注意事项

  • 批量执行时可直接传入feature所在目录的路径,Runner会自动扫描目录下所有.feature后缀的文件执行
  • 执行完成后打开报告目录下的karate-summary.html即可查看聚合报告,每个场景的请求参数、响应结果、断言详情都会完整展示,和JUnit方式运行生成的报告无差异
  • 如果需要对接内部自定义报告平台,可直接读取生成的Cucumber JSON格式结果文件做二次解析,不需要额外埋点采集执行数据
  • 若运行时提示找不到feature文件,检查classpath路径是否以resources目录为根,传磁盘绝对路径时要确保运行进程有对应目录的读写权限

内容的提问来源于stack exchange,提问作者Sriya Reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 22:39:23