以下是我的build.gradle的一部分,我已将其配置为从代码覆盖范围中排除类。
test {
jacoco {
append = false
destinationFile = file("$buildDir/reports/jacoco/jacoco.exec")
}
finalizedBy jacocoTestReport
}
jacocoTestReport {
reports {
xml {
enabled true
}
html {
enabled true
}
}
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it,
exclude: ['**/*DAO*.*'])
})
}
}
这里我想在我的项目中排除DAO类,因为我正在嘲笑这些类,我计划在数据库测试用例中覆盖它们与单元测试不同。
当我在命令下运行时: gradle jacocoTestReport
它会生成代码覆盖率报告,从代码覆盖率中排除这些类, $ {PROJECT_DIR} \建立\报告\ jacoco \测试\ HTML \ index.html的
作为一个原因,我通过以下方式将其排除在gradle构建之外:
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it,
exclude: ['**/*DAO*.*'])
})
}
但是当Jenkins构建项目时,jenkins生成的代码覆盖率报告并未考虑此设置,并且jenkins生成的报告包括覆盖率报告中的那些类。
我尝试过的另一项工作是修改'构建后操作'适用于jenkins的jacoco插件
我已在Exclusions (e.g.: **/*DAO*.*)
文本字段下设置了我的模式,这工作正常,测试用例被排除在代码覆盖范围之外。
但我想知道有什么方法可以避免配置jenkins来指定排除模式并使用gradle jacocoTestReport在jenkins上生成的报告,因为这个redudant因为我在build.gradle中指定它并且如果我必须在jenkins上创建多个分支然后它也是一种维护。
根据以下帖子,此问题尚未解决 https://issues.jenkins-ci.org/browse/JENKINS-15570
有人对此有所了解吗?
注意:我的Jacoco版本是:
jacoco {
toolVersion = "0.7.6.201602180812"
}
和jenkins上的Jacoco插件版本是:
2.0.1