我正在尝试从我们持续集成 Jenkins 构建到 Sonar 中获取 JUnit 测试报告对于我们的 Android 项目。我离成功只有一步之遥,但我想不出最后一步。
构建是用 Ant 完成的。
我正在使用 Jenkins-started emulator并使用 the missing android XML JUnit test runner 运行测试.测试运行,我使用测试提供的说明成功地将 JUnit XML 结果文件(com.my.package.thing-TEST.xml
等)从设备中提取到指定目录中运行者的作者。
Sonar 分析是使用 The Jenkins Sonar plugin 提供的“调用独立 Sonar 分析”构建步骤完成的.我已经设置了项目属性,以便所有静态源分析等都成功推送到 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 毫秒,我很确定它没有看到和/或打开结果文件,但我不知道为什么。谁能帮忙?
最佳答案
运行器以以下格式生成测试结果名称:
android.package.name-TEST.xml
emma surefire 插件仅查找名称以 "TEST-"
开头的 .xml 文件。
不幸的是,缺少的 android XML 测试运行程序仅提供后缀功能,因此您必须通过在前面添加 "TEST-"
来手动更改每个文件名。
关于android - 为什么 Sonar 不在 Jenkins 上读取我的 JUnit XML 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11419948/