Как указано, например, в объявлении JaCoCo версии 0.8.1 : единственное, что вам нужно сделать - это убедиться, что Gradle использует правильную версию JaCoCo.Все фильтры, реализованные на данный момент в JaCoCo, включены безоговорочно и имеют место при генерации отчета.В том же объявлении и в объявлении 0.8.2 вы можете видеть, что
С плагином Gradle JaCoCo вы можете выбрать время выполнения и версию для задачи "JaCoCoReport", используя "toolVersion"- https://docs.gradle.org/current/userguide/jacoco_plugin.html
И эта версия по умолчанию зависит от версии Gradle - например, Gradle 4.7 по умолчанию использует версию JaCoCo 0.8.1 , а согласно JaCoCo changelog Фильтры для Kotlin были добавлены в 0.8.2.
Так дано src/main/kotlin/DataClass.kt
data class DataClass(var x)
src/test/kotlin/Tests.kt
class Tests {
@org.junit.Test
fun test_data_class() {
DataClass(42)
}
}
и build.gradle
buildscript {
ext.kotlin_version = "1.2.41"
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: "kotlin"
apply plugin: "jacoco"
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
testCompile "junit:junit:4.12"
}
tasks["jacocoTestReport"].dependsOn("test")
После выполнения gradle jacocoTestReport
с использованием Gradle 4.7 вы увидите
И после добавления
jacoco {
toolVersion = '0.8.2'
}
один и тот же Gradle и одна и та же команда выдаст
PS Я считаю, что exclude
в вашемпопытка
test {
jacoco {
exclude("*equals", "*hashCode")
}
}
относится к исключению тестов из выполнения , поскольку jacoco
свойство test
не имеет exclude
- какдобавление
test {
jacoco {
exclude("Tests.class")
}
}
к тому же примеру, приведенному выше, приводит к нулевым испытаниям.