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

Ben*_*654 8 junit android kotlin

我正在为用Kotlin编写的Android应用程序编写一些单元测试,并且从包含的内联集合函数中得到了错误,在这种情况下,我特别对sortedBy进行了排序。

 override fun onDaysSelected(dayOfWeekList: ArrayList<DayOfWeek>) {
        view.userRoutingRule.days = dayOfWeekList.sortedBy { it.dayOfWeek }
        renderRule()
 }
Run Code Online (Sandbox Code Playgroud)

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

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

流程结束,退出代码为0

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

现在有什么解决办法吗?如果我不能仅仅看一下报告,就很难知道我是否错过了某些条件。

Tpo*_*6oH 7

这是计算使用 lambda 的内联方法的覆盖率的一个已知问题。(请参阅内联 Kotlin 方法的无覆盖率报告https://discuss.kotlinlang.org/t/inline-functions-coverage/5366

如果要在当前状态下运行覆盖率,则需要使用其他方法,例如Comparable在您的DayOfWeek和 using.sorted()方法中实现接口。