【问题标题】:How to get Jacoco reports for the Karate test feature files using gradle如何使用 gradle 获取空手道测试功能文件的 Jacoco 报告
【发布时间】:2021-07-09 11:08:10
【问题描述】:

如何使用 Gradle 获取空手道测试功能文件的 Jacoco 报告。

我的项目是一个 Gradle 项目,我正在尝试将 jacoco 报告功能集成到我的项目中以进行空手道测试。服务器在我本地的 8080 端口上运行。

我正在按照以下方式生成 jacoco 报告,请让我知道我的方法是否正确,并给我一个解决方案来获取 gradle 项目的 jacoco 报告。

1) 首先,我尝试在 jacocoagent.jar 的帮助下使用 Gradle 任务生成 jacoco 执行数据,如下所示:

java -javaagent:/pathtojacocojar/jacocoagent.jar=destfile=/pathtojocofile/jacoco.exec -jar my-app.jar

2) 接下来,我正在运行 Gradle 任务来生成报告

project.task ('jacocoAPIReport',type: org.gradle.testing.jacoco.tasks.JacocoReport) {
    additionalSourceDirs = files(project.sourceSets.main.allSource.srcDirs)
    sourceDirectories = files(project.sourceSets.main.allSource.srcDirs)
    classDirectories = files(project.sourceSets.main.output)
    executionData = fileTree(dir: project.projectDir, includes: ["**/*.exec", "**/*.ec"])
    reports {
        html.enabled = true
        xml.enabled = true
        csv.enabled = false
    }
    onlyIf = {
        true
    }
    doFirst {
        executionData = files(executionData.findAll {
            it.exists()
        })
    }
}

          project.task('apiTest', type: Test) {
                    description = 'Runs the api tests'
                    group = 'verification'
                    testClassesDirs = project.sourceSets.apiTest.output.classesDirs
                    classpath = 
                   project.sourceSets.apiTest.runtimeClasspath
                    useJUnitPlatform()
                    outputs.upToDateWhen { false }
                    finalizedBy jacocoAPIReport

                }

我在 jococo.exec 文件中没有看到我的应用程序的任何类。我认为,bcz 我总是将覆盖率报告设为 0%。

【问题讨论】:

    标签: gradle jacoco karate


    【解决方案1】:

    服务器在我本地的 8080 端口上运行。

    我认为这行不通。根据您的代码结构,您需要检测服务器的代码。

    我建议尝试对 Java 方法进行简单的单元测试以使用 Gradle。如果这可行,那么对服务器端代码使用相同的方法,它就会起作用。

    【讨论】:

    • 在同一个项目中,对于单元测试,jacoco 报告正在生成代码覆盖率,单元测试工作 bcz 他们在同一个 JVM 上运行并且类文件将可用,但对于空手道测试,报告的覆盖率为 0%。我正在尝试使用 javaagent.jar 来检测服务器的代码
    • @HimaBindu 是的 - 理想情况下,服务器必须在同一个 JVM 中启动,这是现有的空手道示例:github.com/intuit/karate/tree/master/… - 抱歉,我无能为力任何其他方法,我听说这是可能的,但很困难 - 这是一个可能有帮助的链接 groups.google.com/forum/#!topic/jacoco/NWG1pW5Bpi8
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 2014-06-18
    • 1970-01-01
    • 2019-09-07
    相关资源
    最近更新 更多