jacoco测试报告不排除包装

时间:2016-10-22 20:02:13

标签: java unit-testing testing gradle jacoco

我正试图从jacoco覆盖范围中排除整个包裹,但它无法正常工作 我已按照此回答Filter JaCoCo coverage reports with Gradle中的说明进行操作,但似乎它对我不起作用。 这是代码:

jacocoTestReport {
  reports {
    xml.enabled false
    csv.enabled false
    html.destination "${buildDir}/jacocoHtml"
  }
  afterEvaluate {
    classDirectories = files(classDirectories.files.collect {
        fileTree(dir: it,
                exclude: ['it.unibo.distributedBLS.main/**'])
    })
  }
}

我也尝试过类似排除+ =,写作

的变体
'**/it.unibo.distributedBLS.main/**'

并添加

test {
  jacoco {
    excludes += ['it.unibo.distributedBLS.main/**',     
  }
}

但仍然无法正常工作 有一点我不清楚它是什么“dir:it”代表:我应该把它放在那里?可能是错误吗?

2 个答案:

答案 0 :(得分:2)

如果您收到以下错误

Cannot set the value of read-only property 'classDirectories' for task ':jacocoTestReport' of type org.gradle.testing.jacoco.tasks.JacocoReport.

使用这个

classDirectories.setFrom(
            fileTree(dir: "build/classes/java/main")
                    .filter({file -> !file.path.contains('/dir1')})
                    .filter({file -> !file.path.contains('/dir2')})
                    .filter({file -> !file.path.contains('/dir3')})
    )

答案 1 :(得分:0)

这对我有用(至少对于html而不是xml报告)。我偶然发现它,同时做了一些小调整并重新运行我的构建。它现在有道理但不太直观。

请注意我在test.jacoco中定义我的包的方式与从jacocoTestReport.afterEvaluate

中的实际报告中排除这些包的方式
test {
    finalizedBy jacocoTestReport
    jacoco {
        excludes += ["**/com.mypackage.things/**","**/com.mypackage.entity/**"]
    }
}

jacocoTestReport {
    reports {
        xml.enabled true
        csv.enabled false
        html.enabled false
        xml.destination "${buildDir}/reports/jacoco"
    }

    afterEvaluate {
        classDirectories = files(classDirectories.files.collect {
            fileTree(dir: it,
                exclude: ['**/com/mypackage/things/**',
                          '**/com/mypackage/entity/**'])
        })
    }
}

我为Sonarqube生成XML但我在重新运行时暂时将其切换为HTML,以查看是否删除了包。在某些时候,我注意到com.mypackage.entity被排除在外,但com.mypackage.things却没有被排除在外。就在那时,我意识到我已经使用/在报告中定义了实体包,但是正在使用.的东西包。

对于测试部分,在报告部分中使用点符号更有意义,因为报告可能是在某种html目录结构中生成的,因此使用斜杠符号是有意义的。不确定如何修复XML。我想某种其他符号???