在将JaCoCo与Gradle和Kotlin一起使用时,如何忽略方法?

在将JaCoCo与Gradle和Kotlin一起使用时,如何忽略方法?,gradle,kotlin,jacoco,Gradle,Kotlin,Jacoco,我正试图用Gradle和Kotlin建立JaCoCo,我的问题是我有很多数据类e,它们由编译器生成equals、hashCode和toString方法 我在文档中读到,有了JaCoCo,我可以忽略方法,但JaCoCo的Gradle插件似乎只支持排除s。我该如何解决这个问题 我试过这个: test { jacoco { exclude("*equals", "*hashCode") } } 但在这些方法旁边,我仍然可以看到0% 我做错了什么?比如在公告中说:你唯一

我正试图用Gradle和Kotlin建立JaCoCo,我的问题是我有很多
数据类
e,它们由编译器生成
equals
hashCode
toString
方法

我在文档中读到,有了JaCoCo,我可以忽略方法,但JaCoCo的Gradle插件似乎只支持排除s。我该如何解决这个问题

我试过这个:

test {
    jacoco {
        exclude("*equals", "*hashCode")
    }
}
但在这些方法旁边,我仍然可以看到0%


我做错了什么?

比如在公告中说:你唯一需要做的就是确保Gradle使用正确的JaCoCo版本。到目前为止,在JaCoCo中实现的所有过滤器都是无条件启用的,并在生成报告期间进行。在同一个公告中,你可以看到

使用Gradle JaCoCo插件,您可以使用“toolVersion”为“JacoReport”任务选择运行时和版本

默认版本取决于Gradle的版本,例如,根据0.8.2中添加的Kotlin过滤器


因此给定
src/main/kotlin/DataClass.kt

data class DataClass(var x)
class Tests {
  @org.junit.Test
  fun test_data_class() {
    DataClass(42)
  }
}
src/test/kotlin/Tests.kt

data class DataClass(var x)
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 4.7执行
gradle JacoTestReport
后,您将看到

加上

jacoco {
  toolVersion = '0.8.2'
}
test {
  jacoco {
    exclude("Tests.class")
  }
}
将产生相同的梯度和相同的命令


另外,我相信在您的尝试中,
排除

指,因为没有排除-作为添加的证明

jacoco {
  toolVersion = '0.8.2'
}
test {
  jacoco {
    exclude("Tests.class")
  }
}
与上述示例相同,将导致零测试