android - 如何从 Jacoco 报告中的 Parcelable 中排除自动生成的方法?
问题描述
我正在使用 Jacoco 创建测试覆盖率报告,并且我还使用 Parcelize Android 扩展插件来创建 Parcelables 所需的方法。
当我创建测试报告时,自动生成的函数也出现在测试覆盖率中(例如createFromParcel(Parcel))
,当然它们没有任何覆盖率。
如何从我的报告中排除这些功能?
解决方案
我已经研究了如何做到这一点,显然 Jacoco 从 0.8.2 版开始忽略了自动生成的代码,但对于这种特殊情况,Parcelable 接口工作所需的 CREATOR 静态字段不会被忽略。所以我不得不测试它。虽然我不能轻易找到它作为我的 Parcelable 类的静态字段访问,所以我不得不使用反射来获得它:
val yourParcelableClassCreator = YourParcelableClass::class.java.getField("CREATOR").get(null) as Parcelable.Creator<YourParcelableClass>
之后,您可以createFromParcel
正常测试它的方法,它将反映在您的 jacoco 覆盖率中。
推荐阅读
- javascript - Electron showOpenDialog 箭头功能(event.send)不起作用
- android - 消费购买导致空对象引用
- sql-server - 如果单元格不为空,则计算出现次数
- apache - debian 上的 golang/apache/cgi --- apache 重定向停止工作
- javascript - 无法在 Netlify Lambda 函数中返回 mysql db 查询结果
- r - 如何在 R 中为每列添加具有不同条件的多列?
- mysql - 使用mysql存储过程将日期记录从行转换为列
- ruby - 在简单的 if 语句中使用正则表达式?
- c# - NotificationHub:如果使用相同的 PNS 句柄创建重复安装会怎样?
- ios - Http 调用不适用于 ionic 3 IOS 应用程序。在Android中工作正常