引入JaCoCo导致的类型转换问题分析
💡
原文中文,约5300字,阅读约需13分钟。
📝
内容提要
JaCoCo是一款广泛应用于公司内部的开源覆盖率工具。在引用至测试环境后,出现了下单异常。问题源于系统对请求字段进行加密时出现异常,无法完成类型转换。经分析发现,引入JaCoCo后对类进行了修改,导致出现了合成属性。解决办法是在获取属性集合时对合成属性进行过滤。修改后,测试环境添加JaCoCo配置后,下单功能恢复正常。
🎯
关键要点
- JaCoCo是一款广泛应用于公司内部的开源覆盖率工具。
- 在测试环境中引入JaCoCo后,下单功能出现异常,堆栈信息显示为类型转换错误。
- 问题源于系统对请求字段进行加密时,无法完成类型转换,导致下单流程被阻塞。
- 报错信息中的类型"[Z"代表Java中的boolean类型数组,可能是由于类的动态修改或反射操作导致的。
- 引入JaCoCo后,类被修改,添加了合成属性$jacocoData,导致类型转换异常。
- 合成属性和方法是由Java编译器自动生成的,用于支持编译器内部实现。
- JaCoCo通过在字节码中插入探针来检测代码执行情况,$jacocoData数组用于保存执行结果。
- 解决办法是在获取属性集合时对合成属性进行过滤,使用isSynthetic()方法区分字段类型。
- 修改后,测试环境添加JaCoCo配置后,下单功能恢复正常。
➡️