我创建了一个非常简单的测试函数,如下所示
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
最佳答案
编译内联函数时,编译器实质上会将其主体粘贴到调用位置(代替函数调用)。这意味着覆盖分析无法判断它是一个内联函数,因为它实际上并不存在于您定义它的位置。换句话说,这种行为是内联函数的自然产物。
关于android - Kotlin 内联关键字导致 IntelliJ IDEA 覆盖率报告 0%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37405782/