没有内联 Kotlin 方法的覆盖率报告
No coverage report for inlined Kotlin methods
标有 inline
关键字的 Kotlin 函数在编译期间内联,代码覆盖率工具(如 JaCoCo)似乎无法正确计算代码覆盖率.克服这个问题的通常方法是什么?有没有办法让测试以某种方式避免内联步骤并直接调用被测试的方法?是否可以跳过所有内联方法的报告生成(例如,通过 Gradle 任务)而不排除整个 类?
我不认为可以关闭内联,因为如果不内联某些函数可能没有任何意义。这些包括具有 reified
类型的函数(因为内联创建了类型信息的可用性)和以 lambda 作为参数的函数,因为它们可以影响内联它们的方法的控制流。
JetBrains Java 覆盖工具中存在错误,请参阅 https://youtrack.jetbrains.com/issue/KT-12605。
所以,等到 bug 被修复(或投票,以加速开发)
Kotlin 团队推出了 Kover 插件,目标是支持包括内联函数在内的所有语言结构。
标有 inline
关键字的 Kotlin 函数在编译期间内联,代码覆盖率工具(如 JaCoCo)似乎无法正确计算代码覆盖率.克服这个问题的通常方法是什么?有没有办法让测试以某种方式避免内联步骤并直接调用被测试的方法?是否可以跳过所有内联方法的报告生成(例如,通过 Gradle 任务)而不排除整个 类?
我不认为可以关闭内联,因为如果不内联某些函数可能没有任何意义。这些包括具有 reified
类型的函数(因为内联创建了类型信息的可用性)和以 lambda 作为参数的函数,因为它们可以影响内联它们的方法的控制流。
JetBrains Java 覆盖工具中存在错误,请参阅 https://youtrack.jetbrains.com/issue/KT-12605。
所以,等到 bug 被修复(或投票,以加速开发)
Kotlin 团队推出了 Kover 插件,目标是支持包括内联函数在内的所有语言结构。