如何在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
相关产品推荐
相关产品推荐

