2

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

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

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

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

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

这种方法是否适用并且覆盖结果是否正确?

4

1 回答 1

2

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

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

  • 对每个 Maven 项目执行声纳分析。
  • 对于每个分析,重用报告并传递您的 JaCoCo 报告(使用 -Dsonar.jacoco.itReportPath)
  • Sonar 将从这个 JaCoCo 报告中检索与正在分析的 Maven 项目相关的覆盖率数据。(您的核心项目之一)
  • 因此,对于每个 Maven 项目,您都将获得集成测试的覆盖率。
  • 最后,为了让您的集成测试覆盖您的 Web 服务,您必须使用 Views 插件: http: //www.sonarsource.com/products/plugins/governance/portfolio-management/
  • 创建一个视图,该视图是构成 Web 服务的所有 Maven 项目的聚合。
  • 对其 Maven 项目之一运行 Sonar 分析,以便 Sonar 计算视图。
  • 在视图仪表板上,您将能够通过集成测试获得 Web 服务的代码覆盖率。
于 2013-01-03T09:18:47.433 回答