1.行覆盖率(Line Coverage):
- 衡量代码中每一行是否被至少执行过一次。
2.分支覆盖率(Branch Coverage):
- 衡量代码中每个条件分支(如if语句、switch语句等)是否都被执行过。
3.函数覆盖率(Function Coverage):
- 衡量代码中每个函数是否都被调用过。
4.语句覆盖率(Statement Coverage):
- 衡量代码中每个语句是否都被执行过。
5.路径覆盖率(Path Coverage):
- 衡量代码中所有可能的执行路径是否都被覆盖到。
覆盖率报告的作用:
1.评估测试质量:
- 通过覆盖率报告,开发人员和测试人员可以了解当前测试用例对代码的覆盖情况,从而评估测试的质量和充分性。
2.发现未测试的代码:
- 覆盖率报告可以帮助识别那些从未被执行过的代码段,这些代码段可能存在潜在的缺陷或逻辑错误。
3.优化测试用例:
- 根据覆盖率报告,可以针对性地增加或修改测试用例,以提高代码的覆盖率,确保更多的代码逻辑得到测试。
4.提高代码质量:
- 通过提高代码覆盖率,可以减少代码中的潜在缺陷,提高软件的整体质量和可靠性。
5.支持持续集成:
- 在持续集成(CI)流程中,覆盖率报告可以作为一个重要的指标,帮助团队监控和维护代码质量。如果覆盖率低于某个阈值,可以触发警报或阻止代码合并。
6.辅助代码审查:
- 覆盖率报告可以作为代码审查的一部分,帮助审查人员更好地理解代码的测试情况,从而提出更有针对性的改进建议。
7.风险管理:
- 通过覆盖率报告,项目管理者可以更好地评估项目的测试风险,制定相应的风险管理策略。
2.3.1 Android生成全量报告
一,Gradle任务生成报告
task jacocoTestReport(type: JacocoReport) {reports {xml.enabled = truehtml.enabled = true}def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*']def debugTree = fileTree(dir: "$buildDir/intermediates/javac/debug", excludes: fileFilter)def mainSrc = "$project.projectDir/src/main/java"sourceDirectories.from = files([mainSrc])classDirectories.from = files([debugTree])executionData.from = files("$buildDir/outputs/code_coverage/debugAndroidTest/connected/coverage.ec")
}
- sourceDirectories:项目的源码文件,要指到java层,否则报告中无法渲染代码覆盖情况。
- classDirectories:项目构建的类文件,注意是插桩后构建的文件,但在javac文件夹下。
- executionData:覆盖率数据文件路径,如果没有这个路径,请创建这个目录,并把上节下载的覆盖率数据文件放到这个目录中,重新命名。



二,命令行生成报告


java -jar ${jacococli.jar的路径} report ${exec文件路径}
--classfiles ${类文件路径} --sourcefiles ${源码文件路径,要到/src/main/java}
--encoding utf-8 --html ${报告路径}


2.3.2 Android增量报告(Incremental Report)
增量报告的特点
1.变化部分:
- 增量报告只关注当前构建与上一次构建之间的差异,而不是整个项目的完整覆盖率。
- 例如,如果某个文件在上一次构建中已经完全覆盖,而在当前构建中没有新的测试用例,增量报告将不会显示该文件的覆盖率信息。
2.效率:
- 通过只显示变化部分,增量报告可以更快地生成和解析,减少资源消耗。
- 在大型项目中,增量报告可以显著提高构建和测试的速度。
3.问题定位:
- 增量报告有助于快速定位新引入的代码或测试用例对覆盖率的影响,便于开发者及时发现和修复问题。
4.持续集成:
- 在持续集成环境中,增量报告可以作为构建过程的一部分,帮助团队实时监控代码质量的变化。
- 例如,如果新提交的代码导致覆盖率下降,增量报告可以立即提醒开发人员进行修正。
增量报告的应用场景:
1.代码审查:
- 在代码审查过程中,增量报告可以帮助审查者快速了解新提交的代码对现有测试用例的覆盖情况,确保新代码的质量。
2.持续集成:
- 在持续集成系统中,增量报告可以作为构建过程的一部分,自动检测每次提交对代码覆盖率的影响,确保代码质量的持续改进。
3.回归测试:
- 在回归测试中,增量报告可以帮助测试人员快速识别新引入的代码是否引入了新的问题,确保回归测试的高效性。
2.3.3 生成增量报告的方案


