关于android:Sonar为什么不阅读Jenkins上的JUnit XML结果?

Why isn't Sonar reading my JUnit XML results on Jenkins?

我正在尝试从我们的持续集成中获取JUnit测试报告,Jenkins将其内置到我们的Android项目的Sonar中。我是成功的关键,我不知道最后一步。

该构建是通过Ant完成的。

我正在使用Jenkins启动的模拟器,并使用缺少的android XML JUnit测试运行程序运行测试。测试运行,并且我按照测试运行者作者提供的说明成功地将JUnit XML结果文件(com.my.package.thing-TEST.xml等)从设备中拉到了指定的目录中。

声纳分析是使用Jenkins声纳插件提供的"调用独立声纳分析"构建步骤完成的。我已经设置了项目属性,以便所有静态源分析等都已成功推送到Sonar服务器。

我的问题是,它不会将JUnit测试结果与所有其余分析一起推送。我遵循了Sonar关于重用测试报告的说明。值得注意的是,我设置了以下属性:

1
2
sonar.dynamicAnalysis=reuseReports
sonar.surefire.reportsPath=android/REDACTED-test/junit-results

我可以在生成输出中看到应该解析结果的位置:

1
2
3
4
5
6
7
17:52:28.013 INFO        org.sonar.INFO - Execute Findbugs 2.0.0 done: 25446 ms
17:52:28.378 INFO  p.PhasesTimeProfiler - Sensor FindbugsSensor done: 25812 ms
17:52:28.378 INFO  p.PhasesTimeProfiler - Sensor SurefireSensor...
17:52:28.379 INFO  s.p.s.SurefireSensor - parsing /jenkins/jobs/REDACTED/workspace/android/REDACTED-test/junit-results
17:52:28.383 INFO  p.PhasesTimeProfiler - Sensor SurefireSensor done: 5 ms
17:52:28.383 INFO  p.PhasesTimeProfiler - Sensor CpdSensor...
17:52:28.384 INFO   o.s.p.cpd.CpdSensor - SonarEngine is used

我已经登录到构建机器上,可以看到提到的目录,并且我已经确认那里有几个JUnit XML文件,但是由于某些原因,Sonar服务器仍报告零测试。由于SurefireSensor仅花费5毫秒,因此我很确定它没有看到和/或打开结果文件,但我不知道为什么。有人可以帮忙吗?


跑步者以以下格式产生测试结果名称:

android.package.name-TEST.xml

emma surefire插件仅查找名称以"TEST-"开头的.xml文件。
不幸的是,缺少的android XML测试运行程序仅提供后缀功能,因此您必须通过在前面添加"TEST-"来手动更改每个文件名。