[英]Exclusions not working with Jacoco Gradle plugin
我正在為我的項目設置 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
}
}
我在這里錯過了什么嗎? 我嘗試了各種排除模式,包括“。” 包的分隔符而不是“/”,但似乎沒有任何作用。 任何幫助將不勝感激。
我尚未驗證這一點,但是當我閱讀 JaCoCo 文檔時,它指出可以使用通配符,但所有示例只有一個 *,而不是您的示例所示的兩個。
為了鞏固(並驗證)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 排除類,希望這會有所幫助。
更新:這在 Gradle 7 中發生了變化(我從 5.6.1 到 7.1.1,所以不確定 Gradle 6)並且不再有效。 對於 Gradle 7,您需要將 / 替換為 .; 這是我更新的排除項:
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.gcpud.common.*',
'org.gcpud.testutil.*',
'org.gradle.*',
'org.hamcrest.*',
'org.junit.*',
'org.slf4j.*',
'sun.*',
'worker.*',
'*Test',
'*Test$*',
'*TestIntegration',
'*AllTests',
'*Suite'
]
另請參閱以下 SO 帖子,了解從報告中排除類的其他方法(從報告中排除,而不是覆蓋本身):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.