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