为什么Sonar不会在Jenkins上读取我的JUnit XML结果?

时间:2012-07-10 18:52:03

标签: android junit jenkins sonarqube

我正在尝试从我们的持续集成Jenkins构建到我的Android项目的Sonar中获取JUnit测试报告。我是成功的头发,我无法弄清楚最后一步。

使用Ant完成构建。

我正在使用Jenkins-started emulator并使用the missing android XML JUnit test runner运行测试。测试运行,我使用测试运行的作者提供的指令成功地将JUnit XML结果文件(com.my.package.thing-TEST.xml等)从设备中拉到指定的目录中。

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

我的问题是它不会推动JUnit测试结果以及所有其他分析。我跟着Sonar instructions about reusing test reports。值得注意的是,我已经设置了这些属性:

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

我可以在构建输出中看到它应该解析结果:

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毫秒,我很确定它没有看到和/或打开结果文件,但我不知道为什么。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:9)

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

android.package.name-TEST.xml

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