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

如何在Karate JUnit5中实现Extent Report?原ExtensionHook类已移除

在Karate 1.3.0(JUnit5)中配置Extent Report

1. 调整Maven依赖

确保所有测试依赖添加<scope>test</scope>,并补充cucumber-java依赖避免版本冲突(Karate 1.3.0依赖Cucumber 6.10.4版本):

<dependencies>
    <dependency>
        <groupId>net.masterthought</groupId>
        <artifactId>cucumber-reporting</artifactId>
        <version>5.7.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.intuit.karate</groupId>
        <artifactId>karate-junit5</artifactId>
        <version>1.3.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.vimalselvam</groupId>
        <artifactId>cucumber-extentsreport</artifactId>
        <version>3.1.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.aventstack</groupId>
        <artifactId>extentreports</artifactId>
        <version>5.0.4</version>
        <scope>test</scope>
    </dependency>
    <!-- 补充Cucumber核心依赖,与Karate版本匹配 -->
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>6.10.4</version>
        <scope>test</scope>
    </dependency>
</dependencies>

2. 创建Extent Report配置文件

在src/test/resources下新建extent-config.xml,自定义报告样式:

<?xml version="1.0" encoding="UTF-8"?>
<extentreports>
    <configuration>
        <theme>dark</theme>
        <documentTitle>Karate API自动化测试报告</documentTitle>
        <reportName>接口测试Extent Report</reportName>
        <encoding>UTF-8</encoding>
        <timelineEnabled>true</timelineEnabled>
        <!-- 可根据需求添加更多配置项 -->
    </configuration>
</extentreports>

3. 配置JUnit5测试类

通过Karate的JUnit5 API指定Extent Report插件,同时配置报告输出路径:

package com.your.package;

import com.intuit.karate.junit5.Karate;
import com.intuit.karate.junit5.Karate.Test;

public class ApiTestSuite {

    @Test
    Karate runAllTests() {
        return Karate.run()
                .relativeTo(getClass())
                // 指定Extent Report插件及输出路径
                .plugin("com.vimalselvam.cucumber.listener.ExtentCucumberFormatter:target/extent-report/karate-extent.html")
                // 可选:生成Cucumber JSON报告用于后续扩展
                .plugin("json:target/cucumber-reports/karate-results.json");
    }
}

4. 补充报告收尾逻辑

添加@AfterAll方法完成报告的配置加载与系统信息设置:

import com.vimalselvam.cucumber.listener.Reporter;
import org.junit.jupiter.api.AfterAll;

public class ApiTestSuite {

    // ... 测试方法 ...

    @AfterAll
    static void finalizeExtentReport() {
        // 加载Extent配置文件
        Reporter.loadXMLConfig("src/test/resources/extent-config.xml");
        // 设置报告系统信息
        Reporter.setSystemInfo("运行环境", "测试环境");
        Reporter.setSystemInfo("Karate版本", "1.3.0");
        Reporter.setSystemInfo("JUnit版本", "5.8.1");
    }
}

5. 查看报告

执行JUnit5测试后,Extent Report会生成在target/extent-report/karate-extent.html路径下,直接在浏览器中打开即可查看格式化的测试报告。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:45:24