指定包路径时JUnit 5 Runner不生成Karate summary.html控制台输出
问题描述
当指定包路径执行测试时,JUnit 5 Runner不会在控制台输出Karate的summary.html报告路径,仅在target文件夹中生成单个feature文件的测试报告;而Parallel Runner在相同场景下可以正常在控制台输出汇总报告的相关信息。请问如何让JUnit 5 Runner在指定包路径时,也能在控制台查看汇总的summary报告?
现有JUnit5 Runner代码
package com.tests; import com.intuit.karate.junit5.Karate; public class FakeJsonServerRunnerTest { @Karate.Test Karate testSample() { return Karate.run("classpath:com/tests").relativeTo(getClass()); } }
现有Parallel Runner代码
package com.tests; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; import com.intuit.karate.Results; import com.intuit.karate.Runner; public class FakeJsonServerParallelRunnerTest { @Test void testParallel() { Results results = Runner.path("classpath:com/tests") .tags("~@ignore") //.outputCucumberJson(true) .parallel(9); assertEquals(0, results.getFailCount(), results.getErrorMessages()); } }
解决方案
可以通过在JUnit5 Runner中手动触发汇总报告生成的方式实现控制台输出summary报告路径,具体修改如下:
修改后的JUnit5 Runner代码
package com.tests; import com.intuit.karate.junit5.Karate; import com.intuit.karate.Reporter; import com.intuit.karate.Results; public class FakeJsonServerRunnerTest { @Karate.Test Karate testSample() { // 执行测试并获取结果 Results results = Karate.run("classpath:com/tests") .relativeTo(getClass()) .reportDir("target/karate-reports") // 指定报告生成目录 .outputCucumberJson(true) // 生成cucumber.json用于汇总报告 .results(); // 手动生成汇总报告 Reporter.generateReport(results.getReportDir()); return results.getKarate(); } }
说明
- 通过
.results()方法获取测试执行的Results对象,该对象包含测试结果的元数据和报告目录信息 - 调用
Reporter.generateReport()方法基于单个feature的报告和cucumber.json生成汇总的summary.html - 执行后控制台会输出类似
Karate report: target/karate-reports/summary.html的路径信息,同时汇总报告也会生成在指定目录下
内容的提问来源于stack exchange,提问作者cyrilgeorge153
相关产品推荐
相关产品推荐

