如何获得测试覆盖或Jacoco为Kotlin数据类忽略

Jacoco显示Kotlin数据类别的覆盖率为0%。 如何配置它来衡量覆盖率或忽略数据类呢?

2 Solutions collect form web for “如何获得测试覆盖或Jacoco为Kotlin数据类忽略”

虽然它不能真正回答你的问题,但是通过编写覆盖数据类生成的函数的测试,你可以获得对jacoco数据类的相当全面的覆盖。

例如,假设有一个var和一个val的数据类

 data class MyDataClass(var s1: String, val s2: String) 

当我运行jacoco时,我看到它正在测量由MyDataClass生成的以下内容的覆盖范围:

  • hashCode()
  • equals(Object)
  • toString()
  • MyDataClass(String, String)
  • copy(String, String)
  • setS1(String)
  • getS1()
  • getS2()
  • component1()
  • component2()

涵盖大部分内容的unit testing可能是:

  @Test fun testCodeCoverageForMyDataClass() { // call the constructor val tested = MyDataClass("original s1", "original s2").apply { // call the setters s1 = "new s1" // call the getters assertEquals("new s1 original s2", "$s1 $s2") // call toString() assertEquals("MyDataClass(s1=new s1, s2=original s2)", "$this") // call componentN() functions val (res1, res2) = this assertEquals("new s1 original s2", "$res1 $res2") } // call copy() val testedCopy = tested.copy(s2 = "new s2").apply { // call equals() assertNotEquals(this, tested) // call hashCode() assertNotEquals(this.hashCode(), tested.hashCode()) } } 

我知道,这是一种痛苦,但是,除非有支持,否则这可以帮助我获得覆盖面。

这里有一个悬而未决的问题,所以自动覆盖过滤似乎是一个正在进行的工作。

但是有一个覆盖过滤的注释,你可以在这里find更多的信息。 这可能工作,我没有尝试。

注:提到的注释是一个计划的未来function。 我错误地拿了一些types的文件维基。

  • 用Kotlin和lambda返回接口实现
  • 枚举懒惰属性
  • 被其他同伴对象引用的密封类对象神秘地变为空
  • 我怎样才能得到一个Kotlin对象的名字?
  • 如何在gradle中插入想法插件为Kotlin生成适当的项目配置?
  • “模式匹配”不适用于Int子句(分支)
  • Gradle sinc以kotlin扩展失败。 输入字符串:“”在build.gradle文件模块(应用程序)
  • 无法创建新用户
  • Kotlin:Apply和Also有什么区别?
  • 如何添加一个新的配置使用Gradle脚本Kotlin?
  • Jsoup中的属性值的字符集
  • Kotlin language will be the best programming language for Android.