Skip to main content

gradle 如何添加测试覆盖率的配置要求

One min read

团队成员经常忘记写单元测试,那如何强制让写测试呢?

通过在 gradle 中添加相关的配置:

1. 在build.gradle中添加相关的配置

plugins中需要引入jacoco的依赖:

plugins {
id 'java'
id 'org.springframework.boot' version '3.3.2'
id 'io.spring.dependency-management' version '1.1.6'
id 'jacoco'
}

添加一个生成jacoco测试报告的任务:

jacocoTestReport {
dependsOn test
reports {
xml.required = false
csv.required = false
html.outputLocation.set(layout.buildDirectory.dir("reports/jacoco"))
}
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
fileTree(dir: it, exclude: ['**/dto', '**/entity', '**/domain'])
}))
}
}
  • 生成的测试报告路径: build/reports/jacoco/index.html
  • 可以忽略某些文件,比如 entity 等

添加一个测试覆盖率检查的任务:

jacocoTestCoverageVerification {
dependsOn test
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
fileTree(dir: it, exclude: ['**/dto', '**/entity', '**/domain'])
}))
}
violationRules {
rule {
limit {
counter = 'LINE'
value = 'COVEREDRATIO'
minimum = 0.7
}
}
rule {
limit {
counter = 'BRANCH'
value = 'COVEREDRATIO'
minimum = 0.8
}
}
}
}

我这里lineCoverage 需要达到 70%, 分支覆盖率需要达到 80%

2. git hooks配置

3. CI/CD 中的配置

Loading Comments...