我正在为我的项目设置Jacoco Gradle插件。该插件执行正常并生成覆盖率报告,但它不排除我将被排除的包。
我想要包含的类是com / xxx / ws / hn / **,我想要排除的类是com / xxx / ws / enterprise /**.
这是我的Gradle脚本:
apply plugin: "jacoco"
jacoco {
toolVersion = "0.6.2.201302030002"
reportsDir = file("$buildDir/reports/jacoco")
}
test {
jacoco{
excludes = ["com/xx/ws/enterprise/**/*"]
includes = ["com/xxx/ws/hn/**/*"]
append = false
}
}
jacocoTestReport {
dependsOn test
description = "Generate Jacoco coverage reports after running tests."
executionData = files('build/jacoco/test.exec')
reports {
xml.enabled true
html.enabled true
}
}
我在这里遗漏了什么?我尝试了各种排除模式,包括'。'包的分隔符而不是'/',但似乎没有任何效果。任何帮助将不胜感激。
答案 0 :(得分:1)
为了巩固(并验证)Joachim 的答案,我看到了这篇 SO 帖子,发现使用单个通配符指定规范类名、类路径样式(带斜杠,而不是句点)实际上效果很好。例如,这是在我的构建中使用的排除列表,定义为单独的 gradle 文件中的列表:
def testExcl = [
'android/*',
'com/android/*',
'com/nativelibs4java/*',
'com/ochafik/*',
'com/fasterxml/*',
'com/esotericsoftware/*',
'com/google/*',
'com/lmax/*',
'com/sun/*',
'jdk/*',
'mockit/*',
'org/apache/*',
'org/bridj/*',
'org/gradle/*',
'org/hamcrest/*',
'org/junit/*',
'org/slf4j/*',
'sun/*',
'worker/*',
'*Test',
'*TestIntegration',
'*AllTests',
'*Suite'
]
我大概尝试了 10 或 12 种其他方式来格式化类名,这是唯一有效的方式。 我不知道为什么像这样简单/基本的东西如此难以搜索并且很难在 Gradle 的上下文中找到明确的答案(即在 JaCoCo 的官方文档之外,其中没有关于 Gradle 集成的文档,但是 Ant 和 Maven集成文档在那里)。
如果其他人试图让 JaCoCo 排除类,希望这会有所帮助。
答案 1 :(得分:0)
我还没有验证这一点,但是当我阅读JaCoCo文档时,它声明可以使用通配符,但所有示例只有一个*,而不是两个,如您的示例所示。