我正在为用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结束的过程
我的单元测试全部通过了,但是当我查看覆盖率报告时,由于该错误使它无法完成,因此几乎是完全裸露的。
在这一点上有什么解决办法吗?如果我不能只看报告,就很难知道我是否错过了某些情况。
答案 0 :(得分:1)
这是计算使用lambda的imline方法的覆盖率的已知问题。 (请参见No coverage report for inlined Kotlin methods和https://discuss.kotlinlang.org/t/inline-functions-coverage/5366)
如果要在当前状态下运行Coverage,则需要使用其他方法,例如,在Comparable
中实现DayOfWeek
接口并使用.sorted()
方法。