Android(Kotlin)代码覆盖率异常

时间:2017-10-03 04:01:51

标签: android kotlin jacoco

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

以_ $ ...开头的方法是Kotlin或Android的内部方法,我强烈怀疑。我的问题是:1)是否有人了解为什么这些方法包含在Jacoco代码覆盖率报告中,以及2)有没有办法将它们排除?

2 个答案:

答案 0 :(得分:1)

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

  

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

     

在每个Kotlin Activity中添加隐藏的缓存功能和字段。该方法非常小,因此它不会增加APK的大小。

     

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

官方文件说明:

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

本文详细介绍了这篇文章:

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

答案 1 :(得分:0)

在很大程度上,由于@triad的答案,我能够提出一个解决方案,解决看起来像Kotlin的问题。在@triad引用的Antonio Leiva帖子中记录了这种解决方法。简而言之,解决方案是关闭MainActivity中的缓存。完整的解决方案是up on GitHub.

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