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

标签 android junit jenkins sonarqube

我正在尝试从我们持续集成 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/

相关文章:

android - VectorDrawable 图像变得像素化

java - 有效证书上的 SSL 连接错误

junit - 如何以 Junit 4 方式测试 Struts2 Action ?

java - Junit中如何调用数据源

java - EasyMock 'Expected 1, Actual 1'

jenkins - 如何从命令行启动Jenkins管道?

php - 需要通过php文件更改mysqli_query输出格式

java - 扭曲过早关闭与java套接字的连接

xml - 使用 sed 替换 xml 标签

java - Ant 无法在它创建的 .jar 文件中找到类