首页 > 解决方案 > 如何从 Jacoco 报告中的 Parcelable 中排除自动生成的方法?

问题描述

我正在使用 Jacoco 创建测试覆盖率报告,并且我还使用 Parcelize Android 扩展插件来创建 Parcelables 所需的方法。

当我创建测试报告时,自动生成的函数也出现在测试覆盖率中(例如createFromParcel(Parcel)),当然它们没有任何覆盖率。

如何从我的报告中排除这些功能?

标签: androidkotlinparcelablejacoco

解决方案


我已经研究了如何做到这一点,显然 Jacoco 从 0.8.2 版开始忽略了自动生成的代码,但对于这种特殊情况,Parcelable 接口工作所需的 CREATOR 静态字段不会被忽略。所以我不得不测试它。虽然我不能轻易找到它作为我的 Parcelable 类的静态字段访问,所以我不得不使用反射来获得它:

val yourParcelableClassCreator = YourParcelableClass::class.java.getField("CREATOR").get(null) as Parcelable.Creator<YourParcelableClass>

之后,您可以createFromParcel正常测试它的方法,它将反映在您的 jacoco 覆盖率中。


推荐阅读