【问题标题】:No coverage report for inlined Kotlin methods内联 Kotlin 方法没有覆盖报告
【发布时间】:2017-02-10 14:00:59
【问题描述】:

标有 inline 关键字的 Kotlin 函数在编译期间是内联的,而且代码覆盖率工具(如 JaCoCo)似乎无法正确计算代码覆盖率。克服这个问题的通常方法是什么?有没有办法让测试以某种方式避免内联步骤并直接调用测试的方法?是否可以在不排除整个类的情况下跳过所有内联方法的报告生成(例如通过 Gradle 任务)?

【问题讨论】:

    标签: testing gradle code-coverage kotlin jacoco


    【解决方案1】:

    我认为关闭内联是不可能的,因为如果某些函数没有内联,它们可能没有任何意义。这些包括具有reified 类型的函数(因为内联创建了类型信息的可用性)和以 lambda 作为参数的函数,因为它们会影响内联方法的控制流。

    【讨论】:

      【解决方案2】:

      JetBrains Java Coverage 工具中存在错误,请参阅https://youtrack.jetbrains.com/issue/KT-12605

      所以,等到 bug 被修复(或投票,以加快开发速度)

      【讨论】:

      【解决方案3】:

      Kotlin 团队推出了Kover 插件,旨在支持包括内联函数在内的所有语言结构。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-28
        • 2018-07-27
        • 1970-01-01
        • 2019-01-29
        • 2013-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多