Maven 使用Sonarqube/Jenkins管理多个Surefire报告路径

Maven 使用Sonarqube/Jenkins管理多个Surefire报告路径,maven,eclipse-plugin,jenkins,sonarqube,maven-surefire-plugin,Maven,Eclipse Plugin,Jenkins,Sonarqube,Maven Surefire Plugin,在我的公司,我们开发了由Jenkins CI服务器(与tycho&maven一起)持续构建的eclipse插件,该服务器还执行测试(单元测试和SWTBot测试)。作为构建后操作,我们通过maven将测试数据(JaCoCo和Surefire报告)发送到SonarQube服务器进行分析。我们的源代码和测试都位于自己的模块中 在src/com.mycompany.projectA/中,我们有来自项目A的源代码 在test/com.mycompany.projectA.tests.ut/中,我们有项目

在我的公司,我们开发了由Jenkins CI服务器(与tycho&maven一起)持续构建的eclipse插件,该服务器还执行测试(单元测试和SWTBot测试)。作为构建后操作,我们通过maven将测试数据(JaCoCo和Surefire报告)发送到SonarQube服务器进行分析。我们的源代码和测试都位于自己的模块中

  • 在src/com.mycompany.projectA/中,我们有来自项目A的源代码
  • 在test/com.mycompany.projectA.tests.ut/中,我们有项目A中的单元测试
  • 在test/com.mycompany.projectA.tests.swtbot/中,我们有来自projectA的swtbot测试
为了让Sonar为每个源插件的测试找到Jacoco和Surefire报告,我们在pom.xml中设置了报告路径:

<sonar.jacoco.reportPath>${project.basedir}/../../test/${project.artifactId}.tests.ut/target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.surefire.reportsPath>${project.basedir}/../../test/${project.artifactId}.tests.ut/target/surefire-reports</sonar.surefire.reportsPath>
${project.basedir}/./../test/${project.artifactId}.tests.ut/target/jacoco.exec
${project.basedir}/./../test/${project.artifactId}.tests.ut/target/surefire-reports
但这只允许每个插件进行一次测试。为了在SonarQube中看到SwtBot测试的覆盖范围,我们添加了SwtBot测试作为集成测试(是的,我知道,不是很整洁…)

${project.basedir}/./../test/${project.artifactId}.tests.swtbot/target/jacoco.exec
这样,我们至少可以在SonarQube中看到单元测试覆盖率和SWTBot测试覆盖率。但由于我们只能为surefire报告设置一个报告路径,这些报告被Sonar忽略,我们无法看到有多少SWTBot测试通过/失败


是否有一种方便的方法来添加分析中要考虑的surefire报告的多个位置?

这还不可能,但有一个问题需要解决:


请随意观看并投票。

也许您可以将每个项目的jacoco.exec附加在一起,并将集成的jacoco报告提交给Sonar。下面的链接是集成jacoco报告的一个很好的示例。

<sonar.jacoco.itReportPath>${project.basedir}/../../test/${project.artifactId}.tests.swtbot/target/jacoco.exec</sonar.jacoco.itReportPath>