Jenkins Pipeline中Maven集成SonarQube测试结果不显示问题
Jenkins Pipeline + Maven + SonarQube 无测试结果排查方案
我之前也碰到过一模一样的问题,结合你的流水线片段和症状来看,核心问题大概率是SonarQube没正确收集到测试报告,或者Maven根本没生成测试结果文件。咱们一步步来排查解决:
第一步:先确认测试报告是否真的生成了
先去Jenkins工作目录下的my-git-dir文件夹里,找target/surefire-reports(JUnit测试)或者对应测试框架的报告目录:
- 如果这个文件夹是空的,说明Maven根本没执行测试——检查你的构建命令是不是加了
-DskipTests/-Dmaven.test.skip=true这类跳过测试的参数; - 如果文件夹里有
.xml测试报告,那问题就出在SonarQube的配置上。
第二步:检查SonarQube与测试报告的关联配置
SonarQube不会自动识别测试报告路径,必须明确指定:
方式1:在项目pom.xml中添加配置
<properties> <!-- JUnit测试报告路径 --> <sonar.junit.reportPaths>target/surefire-reports</sonar.junit.reportPaths> <!-- 如果是TestNG测试,换成下面这条 --> <!-- <sonar.testng.reportPaths>target/surefire-reports</sonar.testng.reportPaths> --> </properties>
方式2:在Pipeline的Sonar扫描命令中追加参数
mvn sonar:sonar -Dsonar.junit.reportPaths=target/surefire-reports \ -Dsonar.projectKey=你的项目Key \ -Dsonar.host.url=http://你的SonarQube地址 \ -Dsonar.login=你的SonarQube Token
第三步:确认Pipeline的执行顺序
Sonar扫描必须在Maven测试执行完成之后运行,不然它找不到刚生成的测试报告。补全后的流水线大概是这样:
node('master'){ stage('Git Clone') { dir('my-git-dir'){ git branch: "${GIT_BRANCH}", url: "${GIT_REPO}", credentialsId: '11111111-111-1111-1111-111111111111' } } stage('Build & Generate Test Report') { dir('my-git-dir'){ // 先执行测试,生成报告 sh 'mvn clean test' } } stage('SonarQube Scan') { dir('my-git-dir'){ // 再执行Sonar扫描,此时能拿到测试报告 sh 'mvn sonar:sonar -Dsonar.junit.reportPaths=target/surefire-reports -Dsonar.projectKey=your-project-key -Dsonar.host.url=http://your-sonar-url -Dsonar.login=your-sonar-token' } } }
第四步:排查SonarQube后台与Jenkins插件配置
- 登录SonarQube后台,找到对应项目的「配置」页面,确认没有单独覆盖测试报告路径的设置;
- 检查Jenkins系统配置里的SonarQube服务器:地址、Token是否正确,且已安装
SonarQube Scanner插件。
最后:看日志找线索
去Jenkins流水线日志里定位Sonar扫描阶段的输出,有没有类似Could not find test reports或者Test reports ignored的警告?这些日志会直接告诉你问题的根源。
内容的提问来源于stack exchange,提问作者Lgalan90
相关产品推荐
相关产品推荐

