如何在手动测试中生成 jacoco 覆盖率?

How to generate jacoco coverage in manual tests?

我在 wildfly 9 上有一个 Web 应用程序 运行 使用 gradle 构建它,我想获得手动测试的代码覆盖率,所以我开始使用 jacoco这样做。到目前为止,我的 build.gradle 文件中的这个是用于在调试模式下启动 java 的:

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
    options.debug = true
    options.compilerArgs = ["-g"]
}

这用于定义 jacoco 报告

jacocoTestReport {
    reports {
        xml.enabled true
        csv.enabled false
        html.destination "${buildDir}/jacocoHtml"
    }
}

但是,它不会生成 jacoco 文件夹,我想我遗漏了一些要点。

默认情况下,jacocoTestReport 任务不会连接到 DAG 以进行正常构建。要 运行 您可以从命令行调用以下命令

./gradlew test jacocoTestReport

如果你希望它在每次测试 运行 时都 运行(我不推荐),那么你可以将它连接到 [=16= 中的 DAG ]

test.finalizedBy 'jacocoTestReport' // not perfect since it will run when test fails

或者

check.dependsOn 'jacocoTestReport' // 'build' task calls 'check' which calls 'test'

JaCoCo 的使用涉及以下步骤:

  • 执行检测代码(无论是手动测试还是自动测试)
  • 生成报告

您在问题中提供的信息是关于 Java 文件的编译和报告的生成,但与 JVM 的执行无关。

根据 JVM 的启动方式(Gradle/Maven/Ant 插件等),有很多方法可以使用即时检测执行代码,但它们都归结为 JaCoCo Java Agent 的使用启动 JVM 时:

java -javaagent:jacocoagent.jar ...

这是为后端代码设置 jacoco java 代理的文章(用于手动和集成):http://sdetsforsdets.com/2018/03/19/code-coverage-jacoco/