java - jacoco 测试报告不排除包

标签 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/**',     
  }
}

但还是不行。
我不清楚的一件事是“目录:它”代表什么:我应该放在那里什么?难道是那个错误?

最佳答案

这是对我有用的(至少对于 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 没有。就在那时,我意识到我在报告中使用 / 定义了实体包,但正在使用 . 作为 things 包。

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

关于java - jacoco 测试报告不排除包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40196480/

相关文章:

Ruby 正则表达式匹配维度

java - 如何在小程序和桌面应用程序中一致地加载资源?

java - 迭代 java.lang.Iterable 的数组或实例 - 缺少常识解决方案?

java - 在 Multimaps 中获取值 - Guava

c - 通过 ssh 替换并打开 stdin/stdout

Python的单元测试逻辑

python - 我应该如何测试调用其他函数的函数?

androidviewclient - 无法通过端口转发连接到虚拟机上的设备

java - 如何在android中获取临时文件的文件大小?

unit-testing - Istanbul 尔纽约市排除测试文件