Android(Kotlin)代码覆盖率异常

Android连接测试中的代码覆盖率(Jacoco)是确定哪些方法/功能需要某些TLC的非常有用的方法。 现在我正在通过Java切换到Kotlin,我发现了一些我无法解释的异常,因为这个屏幕截图显示了: 在这里输入图像描述

以$ _开头的方法是Kotlin或Android的内部方法,我强烈怀疑。 我的问题是:1)有没有人有任何洞察,为什么这些方法包括在雅科克代码覆盖率报告,2)有没有办法排除他们?

通过Kotlin Android扩展使用综合属性时,会添加这些方法。 每个使用合成属性的Kotlin活动都会添加这些方法。

Kotlin Android Extensions是Kotlin编译器的一个插件,它有两件事:

在每个Kotlin活动中添加一个隐藏的缓存功能和一个字段。 该方法是相当小,所以它不会增加APK的大小。

用函数调用替换每个合成属性调用。

官方文档解释:

https://kotlinlang.org/docs/tutorials/android-plugin.html#under-the-hood

这篇文章做了一个很好的工作,进入细节:

https://antonioleiva.com/kotlin-android-extensions/

在很大程度上,由于@triad的回答,我能够想出一个解决方案来解决似乎是Kotlin错误的问题。 在@triad引用的Antonio Leiva文章中记录了解决方法。 简而言之,解决方案是关闭MainActivity中的缓存。 完整的解决方案在GitHub上。

我不完全理解的是这个解决方案的成本,所以我会推迟检查这个答案,希望提供更好的解决方案。