内联函数导致单元测试代码覆盖率报告中的错误

时间:2019-02-02 22:59:33

标签: android junit kotlin

我正在为用Kotlin编写的Android应用程序编写一些单元测试,并且从包含的内联收集函数(在本例中为sortedBy

)中发现了错误。
 override fun onDaysSelected(dayOfWeekList: ArrayList<DayOfWeek>) {
        view.userRoutingRule.days = dayOfWeekList.sortedBy { it.dayOfWeek }
        renderRule()
 }

这是我在覆盖范围内运行单元测试时遇到的错误

  

---- IntelliJ IDEA覆盖运行器----采样...包括模式:   com.mypackage .. *   排除模式:[2019.02.02 14:49:40](覆盖):类数据未包含   提取:   com.mypackage \ myfile $ onDaysSelected $$ inlined $ sortedBy $ 1:   java.lang.Throwable

     

以退出代码0结束的过程

我的单元测试全部通过了,但是当我查看覆盖率报告时,由于该错误使它无法完成,因此几乎是完全裸露的。

在这一点上有什么解决办法吗?如果我不能只看报告,就很难知道我是否错过了某些情况。

1 个答案:

答案 0 :(得分:1)

这是计算使用lambda的imline方法的覆盖率的已知问题。 (请参见No coverage report for inlined Kotlin methodshttps://discuss.kotlinlang.org/t/inline-functions-coverage/5366

如果要在当前状态下运行Coverage,则需要使用其他方法,例如,在Comparable中实现DayOfWeek接口并使用.sorted()方法。