团队成员经常忘记写单元测试,那如何强制让写测试呢?
通过在 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%