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

时间:2017-01-04 12:06:35

标签: gradle jacoco wildfly-9

我有一个在wildfly 9上运行的web应用程序,使用gradle来构建它,我想获得手动测试的代码覆盖率,所以我开始使用render() { if(this.mainSNLElement != null) { this.savedMainState = this.mainSNLElement.state; } ... } mainSNL() { return ( <StreamedNoteList ref={(streamedList) => { this.mainSNLElement = streamedList; } } importState={this.savedMainState} /* long list of props*/ /> ) } linkTabs() { ... } 这样做。到目前为止,我在jacoco文件中的这个用于在调试模式下启动java:

build.gradle

这用于定义jacoco报告

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

然而,它不会生成jacoco文件夹,我想我错过了一些点或什么的。

3 个答案:

答案 0 :(得分:1)

JaCoCo的使用涉及以下步骤:

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

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

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

java -javaagent:jacocoagent.jar ...

答案 1 :(得分:0)

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

./gradlew test jacocoTestReport

如果您希望每次测试运行时都运行(我不推荐),那么您可以将其连接到DAG

中的build.gradle
test.finalizedBy 'jacocoTestReport' // not perfect since it will run when test fails

或者

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

答案 2 :(得分:0)

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