【问题标题】:Kotlin inline keyword causing IntelliJ IDEA Coverage reporting 0%Kotlin 内联关键字导致 IntelliJ IDEA 覆盖率报告 0%
【发布时间】:2016-05-24 06:19:04
【问题描述】:

我创建了一个非常简单的测试函数,如下所示

class SimpleClassTest {

    lateinit var simpleObject: SimpleClass
    @Mock lateinit var injectedObject: InjectedClass


    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)
    }

    @Test
    fun testSimpleFunction() {
        simpleObject = lookupInstance()
    }

    inline fun lookupInstance() = SimpleClass(injectedObject)
}

我用覆盖率运行它...测试覆盖率是 0%。但是如果我删除 inline 关键字,现在会显示测试覆盖率。

这是 Kotlin 问题还是 Android IntelliJ IDEA 覆盖问题? (注意:JaCoco 的覆盖范围很好)。

注意:我使用的是 Android Studio 2.0 和 Kotlin 1.0.2

【问题讨论】:

  • 你有没有机会在测试输出中得到一个 ArrayIndexOutOfBoundsException ?

标签: android android-studio intellij-idea kotlin


【解决方案1】:

编译内联函数时,编译器实质上会将其主体粘贴到调用位置(代替函数调用)。这意味着覆盖分析无法判断它是一个内联函数,因为它实际上并不存在于您定义它的位置。换句话说,这种行为是内联函数的自然产物。

【讨论】:

  • 当使用 inline 时,没有理由将其他人的覆盖率都算为零。 JaCoco 还行,以上就不解释了。
猜你喜欢
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 2012-07-18
相关资源
最近更新 更多