我一直试图从jacoco生成的覆盖率报告中排除某些类和/或软件包。我以前曾与jacoco一起工作过,但它不是一个多模块项目,因此我尝试转换配置并将其导出到模块中,但是到目前为止,报告返回时完全忽略了我的排除路径。
我尝试了许多解决方案,例如:
我不知道我在做什么错,在gradle上我不是很了解,几乎我发现的每个文档/示例都使用单个模块项目。我创建了一个小项目,并将其推送到gitlab,这样您可以拥有更好的外观。
期望的结果是能够直接向模块添加更多路径或类。
非常感谢您能提供的任何帮助。
代码段:
plugins {
kotlin("jvm") version "1.3.71"
jacoco
}
repositories {
mavenCentral()
}
defaultTasks("clean", "build", "test")
allprojects {
apply(plugin = "org.jetbrains.kotlin.jvm")
apply(plugin = "jacoco")
group = "org.example"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
jacoco {
toolVersion = "0.8.5"
}
dependencies {
implementation(kotlin("stdlib-jdk8"))
testImplementation("org.testng:testng:6.14.3")
}
configure<JavaPluginConvention> {
sourceCompatibility = JavaVersion.VERSION_1_8
}
tasks.withType(org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile::class) {
kotlinOptions {
jvmTarget = "1.8"
}
}
tasks.test {
useTestNG()
finalizedBy("jacocoTestReport")
}
}
tasks.jacocoTestReport {
val sourceDirs = sourceSets.main.get().allSource.srcDirs
additionalSourceDirs.setFrom(sourceDirs)
sourceDirectories.setFrom(sourceDirs)
classDirectories.setFrom(sourceSets.main.get().output)
reports {
html.isEnabled = true
xml.isEnabled = false
csv.isEnabled = false
}
}
tasks.register<JacocoReport>("jacocoRootReport") {
val sourceDirs = subprojects.map { project -> project.sourceSets.main.get().allSource.srcDirs }
dependsOn(subprojects.map { project -> project.tasks.test })
sourceDirectories.setFrom(sourceDirs)
additionalSourceDirs.setFrom(sourceDirs)
classDirectories.setFrom(subprojects.map { project -> project.sourceSets.main.get().output })
executionData.setFrom(subprojects.map { project -> project.tasks.jacocoTestReport.get().executionData })
reports {
html.isEnabled = true
xml.isEnabled = false
csv.isEnabled = false
}
}
tasks.test {
finalizedBy("jacocoRootReport")
}
dependencies {
implementation(project(":api"))
}
tasks {
getByName<JacocoReport>("jacocoTestReport") {
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.map {
fileTree(it) {
exclude("org/example/AppClass.class")
}
}))
}
}
}
此外,对于其他任何问题的反馈都非常感激,我正在尝试学习/改进,并且可以使用一些:)。
[[Edit#1]刚刚将singlemodule branch添加到了按预期方式工作的同一存储库中,但以单模块模式运行。
[[Edit#2]注意我正在jacoco: 0.8.5
gradle: 6.1
和Kotlin DSL (build.gradle.kts)
上的配置文件一起使用>
我一直在尝试从jacoco生成的覆盖率报告中排除某些分类和/或软件包。我以前与jacoco一起工作过,但它不是一个多模块项目,所以我尝试翻译...
前段时间,我还停留在与Sonarqube设置JaCoCo的过程中,并提出了this article,这可能会对您有所帮助。