使用 gradle 和 kotlin 的 Jacoco 未创建 jacoco.exec 文件

Jacoco with gradle and kotlin is not creating jacoco.exec file

我已经设置了一个基本的 kotlin 项目(空 classes,一个测试文件)并尝试使用 gradle 的插件设置 jacoco 与 gradle: https://docs.gradle.org/current/userguide/jacoco_plugin.html

当我 运行 测试时,一个测试通过了,但是没有创建 jacoco.exec 文件。我错过了什么?我假设 classes 永远不会被检测到,但似乎找不到关于如何为 jacoco 设置 build.gradle 的太多信息。或者 jacoco 不能检测从 kotlin 创建的 class 文件吗?

group 'com.ronnev.filewatcher'
version '0.1'

buildscript {
    ext.kotlin_version = '1.1.61'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.2'
    }
}

apply plugin: 'kotlin'
apply plugin: 'org.junit.platform.gradle.plugin'
apply plugin: 'jacoco'

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"

    testCompile 'org.junit.jupiter:junit-jupiter-api:5.0.2'

    testRuntime 'org.junit.jupiter:junit-jupiter-engine:5.0.2'
}

jacoco {
    toolVersion = "0.7.9"
    reportsDir = file("$buildDir/jacoco/")
}

jacocoTestReport {
    classDirectories = files("${buildDir}/classes")

    reports {
        xml.enabled true
        csv.enabled false
        html.destination file("${buildDir}/jacoco/jacocoHtml")
    }
}

test {
    jacoco {
        append = false
        destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
    }
}

当我 运行 gradle 测试时,我希望创建一个 build/jacoco/jacoco.exec 文件,但它没有。

vextorspace@vPrecise:~/projects/filewatcher $ gradle clean test
:clean
:compileKotlin
w: /home/vextorspace/projects/filewatcher/src/main/kotlin/com/ronnev/filewatcher/files/DependentFinder.kt: (6, 28): Parameter 'className' is never used
:compileJava UP-TO-DATE
:copyMainKotlinClasses
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestKotlin
:compileTestJava UP-TO-DATE
:copyTestKotlinClasses
:processTestResources
:testClasses
:junitPlatformTest

Test run finished after 71 ms
[         2 containers found      ]
[         0 containers skipped    ]
[         2 containers started    ]
[         0 containers aborted    ]
[         2 containers successful ]
[         0 containers failed     ]
[         1 tests found           ]
[         0 tests skipped         ]
[         1 tests started         ]
[         0 tests aborted         ]
[         1 tests successful      ]
[         0 tests failed          ]

:test SKIPPED

BUILD SUCCESSFUL

当我查看构建目录时,没有创建 jacoco 文件夹:

vextorspace@vPrecise:~/projects/filewatcher $ ls build
classes  kotlin  kotlin-build  kotlin-classes  resources  test-results

如有任何帮助或提示,我们将不胜感激!

谢谢!

Jacoco 还不能将自己附加到 JUint5 使用的新任务名称(例如 junitPlatformTest)。

您需要 "help" Gradle 使用 task.dependsOn(otherTask) 方法调用在两个任务之间创建连接。

在您的情况下,将此添加到您的 build.gradle 可能有效:

jacoco {
    // This is the latest version at the time of writing this. Change as you need.
    toolVersion = '0.7.9'
    applyTo junitPlatformTest
}

test.dependsOn junitPlatformTest