java - 无法在 Karate 框架中生成报告

标签 java karate cucumber-jvm

我在使用 Karate 框架生成报告时遇到问题。我有推荐的链接 https://github.com/intuit/karate/blob/master/karate-demo/src/test/java/demo/DemoTestParallel.java https://github.com/intuit/karate#parallel-execution https://github.com/intuit/karate/tree/master/karate-demo#example-report 所做的与给定的完全相同,但我在生成报告时仍然面临问题。 请查找以下项目详细信息。 POM.xml

<dependencies>
        <dependency>
            <groupId>com.intuit.karate</groupId>
            <artifactId>karate-apache</artifactId>
            <version>0.9.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.intuit.karate</groupId>
            <artifactId>karate-junit4</artifactId>
            <version>0.9.5</version>
            <scope>test</scope>
        </dependency>
         <dependency>
            <groupId>net.masterthought</groupId>
            <artifactId>cucumber-reporting</artifactId>
            <version>5.1.1</version>
            <scope>test</scope>
        </dependency> 
    </dependencies>

测试运行

public class TestRunner {

    @Test
    public void testParallel() {
        Results results = Runner.path("classpath:testapis").tags("@test").parallel(5);
        generateReport(results.getReportDir());
        assertTrue(results.getErrorMessages(), results.getFailCount() == 0);        
    }

    public 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"), "demo");
        ReportBuilder reportBuilder = new ReportBuilder(jsonPaths, config);
        reportBuilder.generateReports();        
    }

}

项目文件夹设置 enter image description here

特征文件

@test
Feature: Title of your feature
  I want to use this template for my feature file


  Scenario: Title of your scenario
    * url "https://jsonplaceholder.typicode.com"
    Given path "todos/1"
    When method GET
    Then status 200

我只是作为mvn clean test执行

并在控制台中收到以下错误消息

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running testapis.TestRunner
23:24:41.844 [main] INFO com.intuit.karate.Runner - waiting for parallel features to complete ...
Karate version: 0.9.5
======================================================
elapsed:   0.06 | threads:    5 | thread time: 0.00 
features:     0 | ignored:    0 | efficiency: 0.00
scenarios:    0 | passed:     0 | failed: 0
======================================================

Feb 23, 2020 11:24:42 PM net.masterthought.cucumber.ReportBuilder generateErrorPage
INFO: Unexpected error
net.masterthought.cucumber.ValidationException: None report file was added!
    at net.masterthought.cucumber.ReportParser.parseJsonFiles(ReportParser.java:58)
    at net.masterthought.cucumber.ReportBuilder.generateReports(ReportBuilder.java:88)
    at testapis.TestRunner.generateReport(TestRunner.java:34)
    at testapis.TestRunner.testParallel(TestRunner.java:24)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)

执行了 0 个功能,但按照我给出的指示,我相信了。

有人可以帮我解决这个问题吗?

最佳答案

如果执行了 0 个测试,这是正常的,第 3 方 cucumber 报告库将抛出此错误。

看起来您的 pom.xml 没有正确设置资源:https://github.com/intuit/karate#folder-structure

如果您仍然遇到困难,请按照以下流程操作:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

关于java - 无法在 Karate 框架中生成报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60365158/

相关文章:

cucumber - gradle cucumber jvm异常:在[类路径:]找不到功能

maven - 在 Maven Cucumber Reports 中构建失败时不会生成报告

java - 以编程方式从给定化学式中分离原子

java - Android 中未处理异常

nested - 如何验证 Karate 中嵌套 json 数组中的元素?

scala - 如何从 Cucumber-JVM 中的另一个步骤调用一个步骤

java - 在Android游戏中按分数对玩家姓名进行排序

java - 将信息从一个文件传递到另一个文件

api - 如何在 Karate 中复制节点及其子节点

karate - 调用 Karate 功能,其中包括内部的另一个调用