4

我正在尝试从我们的 Jenkins为我们的 Android 项目构建到Sonar中的持续集成中获取 JUnit 测试报告。我离成功只有一步之遥,我想不出最后一步。

构建是使用 Ant 完成的。

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

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

我的问题是它不会将 JUnit 测试结果与所有其他分析一起推送。我已经按照Sonar 关于重复使用测试报告的说明进行操作。值得注意的是,我设置了这些属性:

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

4

1 回答 1

9

运行程序以以下格式生成测试结果名称:

android.package.name-TEST.xml

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

于 2012-08-14T16:55:04.240 回答