Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android(Kotlin)代码覆盖率异常_Android_Kotlin_Jacoco - Fatal编程技术网

Android(Kotlin)代码覆盖率异常

Android(Kotlin)代码覆盖率异常,android,kotlin,jacoco,Android,Kotlin,Jacoco,Android连接测试中的代码覆盖率(Jacoco)是确定哪些方法/函数需要TLC的一种非常有用的方法。现在我切换到Kotlin而不是Java,我发现了一些我无法解释的异常情况,如此屏幕截图所示: 以$$开头的方法。。。是Kotlin或Android内部的,我强烈怀疑。我的问题是:1)有人知道为什么这些方法会包含在Jacoco代码覆盖率报告中吗?2)有没有办法排除它们?这些方法是在通过Kotlin Android扩展使用合成属性时添加的。使用合成特性的每个Kotlin活动都将添加这些方法 Ko

Android连接测试中的代码覆盖率(Jacoco)是确定哪些方法/函数需要TLC的一种非常有用的方法。现在我切换到Kotlin而不是Java,我发现了一些我无法解释的异常情况,如此屏幕截图所示:


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

这些方法是在通过Kotlin Android扩展使用合成属性时添加的。使用合成特性的每个Kotlin活动都将添加这些方法

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

在每个Kotlin活动中添加隐藏缓存函数和字段。该方法非常小,因此不会大大增加APK的大小

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

官方文件说明:

本文非常详细地介绍了以下内容:


在很大程度上,由于@triad的回答,我能够找到一个解决Kotlin bug的解决方案。这项工作在@triad引用的Antonio Leiva帖子中进行了记录。简而言之,解决方案是在MainActivity中关闭缓存。完整的解决方案是


我不完全了解此解决方案的成本,因此我将推迟检查此答案,希望能提供更好的解决方案。

答案很好,但我的两个问题仍然存在:1)如果这些是“隐藏”功能,为什么Jacoco不隐藏它们?2) 有没有办法排除这些函数,或者在测试中调用它们?第二个问题的解决方案将是首选。@godin您的链接非常感谢。