Android覆盖率-Jacoco总结-异常情况
文章目录
Android覆盖率,使用Jacoco时遇到的各种意外情况
基础
本篇是"Android覆盖率-Jacoco使用总结"(后称"总结"")的后续整理。
由于后期遇到的问题太多,写在总结里可能过于累赘,故开新篇。名正言顺多水一篇!
扩充说明
Jacoco的覆盖率报告html文件主要包含:
- index.html 主html文件,用于展示整体情况
- jacoco-resources.html/report.css 整个html的css样式文件
- XXX.java.html 某个java文件的具体覆盖信息
- XXX.html 某个java文件的覆盖索引,以方法拆分
其他请参阅"总结"
Why: 执行覆盖率,一直不产出某些模块的报告
要执行Jacoco,Gradle中默认需要以下前提:
- 只支持Debug包
- 只支持非混淆包(混淆后无法对应源文件)
- 需要插桩的模块需要增加参数
在需要的模块中添加
|
|
Where: 同层文件夹中其他java文件报告存在,但是个别文件不存在; 只包含静态方法的java文件的不存在
查阅资料后确认,使用手工覆盖的Jacoco无法覆盖静态方法。 原因应该为其使用字节码判定是否覆盖,但是静态方法存在的class未init时不会生成字节码,导致无法覆盖。
参考: https://www.jacoco.org/jacoco/trunk/doc/faq.html - Why are abstract methods not shown in coverage reports?
参考: https://stackoverflow.com/questions/30121265/how-to-add-static-member-variables-jacoco-test-coverage
What: 执行覆盖率时崩溃,提示Error while creating report: Can’t add different class with same name
Jacaoco不支持增加相同名称的不同class,为解决这个问题,我是进行分拆,一步一步增加classDirectories的
|
|