研发效能工具之测试覆盖率统计

本次任务的目的是统计安卓java开发的测试覆盖率。

在java方面测试代码覆盖率毫无疑问会推荐jacoco,实际上jacoco的成熟度并不高,官方文档主要在maven项目和eclipse工具上应用。在Gradle上的应用,官方提供了简单的文档介绍。The JaCoCo Plugin 。国内的各种文章有各种版本,并且常常随着Gradle的版本快速发展,各种Bug层出不穷,无法正常运行。经过多方探寻,这里将最新的成功经验记录如下:

本文使用 Gradle 6.7.1, Jacoco版本0.88, sonarqube 9.6 参考的Gradle Jacoco Plugin的文档来自Gradle 7.6.

前提条件,完成了junit格式测试用例的编写。

主要只需要修改根目录下的build.gradle



plugins {
    id 'jacoco'
    id 'java'
    id "org.sonarqube" version  "3.5.0.2730"
}



test {
    finalizedBy jacocoTestReport // report is always generated after tests run
}
jacocoTestReport {
    dependsOn test // tests are required to run before generating the report
}

jacoco {
    toolVersion = "0.8.8"
    reportsDirectory = layout.buildDirectory.dir('customJacocoReportDir')
}



jacocoTestReport {
    reports {
        xml.required = false
        csv.required = false
        html.outputLocation = layout.buildDirectory.dir('jacocoHtml')
    }
}

 gradle.properties 设置sonarqueb的地址和认证token

# gradle.properties
systemProp.sonar.host.url=http://mengpc:9000
systemProp.sonar.login=sqa_64ef0fddf320101f36d61508c665a57b25ed7

成功运行 gradlew test jacocoTestReport 后,在app/build/jacoco目录下能够看到生成的.exec文件。但是始终生成html格式的jacoco覆盖率报告。虽然官方文档里面有写,但是没有找到生成的结果,我认为是gradle jacoco plugin 的一个bug.

弥补的方式是:运行jacococli 命令,单独解析exec文件为html文件。

java -jar lib/jacococli.jar report jacoco.exec \
--html ./report \
--sourcefiles [path/to/your/source/files] \
--classfiles [path/to/your/class/files]

Jacoco 的下载地址是: EclEmma - JaCoCo Java Code Coverage Library

jacococli的文档在这里: https://www.jacoco.org/jacoco/trunk/doc/cli.html

生成的代码覆盖率报告如下:

同步到Sonarqube 上的效果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值