code-coverage - 非 Web 服务模块的 Sonar + jacoco 代理代码覆盖率

标签 code-coverage sonarqube functional-testing multi-module jacoco

我正在尝试使用 JaCoCo 代理来收集网站的 FT 代码覆盖率,方法是将 "-javaagent..." 添加到 Jetty 并运行外部 Selenium 测试(或者,例如,手动测试)。

在测试结束时,我仅得到了实际在 Jetty 中运行的 Web 模块的结果,但没有得到 Web 模块中使用的“核心”模块(在同一项目中)的结果。那么,是否有能力收集项目所有模块的调用?

事实上,我现在尝试使用相同的 JaCoCo 报告目标(即 /tmp/jacoco-res.exec)启动所有项目 Web 服务(它有 5 个),append=true 并运行:

mvn sonar:sonar -Dsonar.jacoco.itReportPath=/tmp/jacoco-res.exec

因此, Sonar 现在对项目中的每个模块使用相同 JaCoCo 报告文件,并且 Sonar 显示了 jetty-run 和核心模块的测试覆盖范围。

此方法适用且覆盖结果正确吗?

最佳答案

我在 Sonar User forum 上提出了一个类似的问题几天前。

简而言之,您的方法是正确的,也是由 Sonar 顾问提出的(如帖子中所示)。

  • 对每个 Maven 项目执行 Sonar 分析。
  • 对于每个分析,重复使用报告并传递您的 JaCoCo 报告(使用 -Dsonar.jacoco.itReportPath)
  • Sonar 将从 JaCoCo 报告中检索 与正在分析的 Maven 项目相关的覆盖数据。 (您的核心项目之一)
  • 因此,对于每个 Maven 项目,您都将通过集成测试获得覆盖率。
  • 最后,通过集成获得网络服务的覆盖范围 测试时,您必须使用 Views 插件: http://www.sonarsource.com/products/plugins/governance/portfolio-management/
  • 创建一个 View ,它是所有 Maven 的聚合 组成 Web 服务的项目。
  • 对其其中一个进行 Sonar 分析 Maven 项目以便 Sonar 计算 View 。
  • 在 View 仪表板上,您将能够获取代码覆盖率 通过您的集成测试来了解 Web 服务。

关于code-coverage - 非 Web 服务模块的 Sonar + jacoco 代理代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14056092/

相关文章:

java - 无法使用 sonar-runner gradle 创建符号表错误

web-services - 我如何使用 Play Framework 的 FakeApplication 来通过 play 的 WS 对象停止对 Web 服务的调用?

ios - 在不同机器上运行 Sonar 扫描仪和 Sonar 服务器时出错

java - 在 Maven 项目上配置 Sonar 6.2 代码覆盖率

支持源代码行排除的 Java 代码覆盖工具

javascript - 使用 Istanbul 尔的 nightwatch.js 的代码覆盖率

gradle - sonarqube-gradle-plugin:为两个级别的子项目派生了错误的基本目录

testing - 将需求与功能测试联系起来

selenium - 寻找开源网络测试自动化框架

angular - 如何在获得代码覆盖率的同时排除规范文件 [Angular]