【发布时间】:2017-01-02 15:58:02
【问题描述】:
我们使用 gradle 3.3 和 jacoco 工具版本 0.7.6.201602180812。 我们有一个这样的 gradle 多项目:
- 父级
- 产品1
- 产品2
- 产品3
- int-test
我们使用单元测试来测试项目源代码,并在所有生成 test.exec 文件的子项目上使用 jacoco。我们在 int-test 项目中有额外的集成测试,将 jacoco 结果添加到 int-test 项目中的 test-exec 中。我们在父项目上使用 sonarqube gradle 插件(2.2.1)来收集 SonarQube 服务器 v6.2 的所有内容。
在他们自己的项目中测试源代码的测试一切运行良好:代码覆盖率在 jacoco 报告以及 SonarQube 上进行测量。 只有 prod-projects(单个进程)中源的集成测试(int-test 项目)覆盖率既不在测试项目的覆盖率报告中,也不在类项目的覆盖率报告中测量。 可能需要以某种方式组合顶级项目的覆盖率数据 - 有人知道该怎么做吗?最好的情况是 SonarQube 仍然显示单个模块级别的覆盖率。编辑
这是一个小测试项目:https://github.com/MichaelZett/coveragetest
运行
'build smokeTest sonarqube' 会导致:
- 运行所有测试
- 在所有子项目中生成 jacoco/test.exec 和 test-results/test/... 文件
- 在 sonarqube 中解析这些
- 为在自己的项目中测试源的测试正确测量覆盖率
- 在另一个项目中测试源的测试缺少覆盖率
【问题讨论】:
-
您的项目结构不清楚。你可能想edit你的问题来扩展它。
-
感谢您的输入,我试图让我的布局更清晰。
-
您的示例项目是否仍可通过某种方式访问?如果我了解 JacocoSensor 在 Sonar 中的工作原理,它要求您在 int-test 模块的类路径中提供可用的类文件。来自 prod1、prod2 等的含义类。
-
@dbalakirev 我刚才删除了这个例子,因为我的问题已经解决了。
标签: gradle sonarqube jacoco multi-module