8

我知道 Android 的 Ant 工具带有内置的 Emma 代码覆盖率,但 Emma 的报告看起来越来越过时,无法轻松集成到其他覆盖率报告甚至 Sonar 中,主要是因为 Emma 缺乏详细的 XML 报告格式。我想要实现的是

  • 单元测试的代码覆盖率(基于 Robolectric,已经用 Cobertura 完成)
  • 集成测试的代码覆盖率(基于 Robotium/模拟器,目前与 Emma 单独完成)
  • 理想情况下合并代码覆盖率结果(恕我直言,只有 Cobertura 才有可能,并且每次测试执行都需要原始 *.ser 文件)
  • 发布到声纳(目前只完成单元测试覆盖,据我所知,声纳只了解一种覆盖格式)

我有其他选择吗?

编辑: sonar-devel 上的这篇文章可能总结了 Android 代码覆盖支持的当前状态以及 Sonar 支持。

4

3 回答 3

6

我已经推送了一个 github 存储库,其中包含与您在问题中提到的相同配置:

  • 标准 android 测试 + emma 代码覆盖率
  • robolectric + cobertura 代码覆盖率(顺便说一句,我认为 cobertura 与 robolectric 不兼容)

并将它们包含在声纳中。一次只有一个,但配置仍然是一个有趣的基础。

https://github.com/stephanenicolas/Quality-Tools-for-Android

我和一位同事打算以与您非常相似的心态来解决这个问题。我们希望更好地集成不同的测试技术,以便 Android 项目和报告也可以在声纳中工作。

如果您想加入我们的工作,我们很乐意为您提供回购的权利并开始与您合作。

斯蒂芬妮

- 更新

自 2013 年 3 月以来,我们还提出了统一配置,以使用 Jacoco 离线仪器进行 robolectric 和标准 junit 测试,并在 Sonar 中同时显示结果。

于 2013-01-13T01:32:29.080 回答
2

您可以使用 robolectric 框架。它将允许您在 Java VM 上运行 JUnit 测试,而不是使用在 Dalvik VM 上运行的 Android Junit 测试。这将允许您使用任何标准覆盖工具(EclEmma、CodeCover、Cobertura 等)。它易于配置并且运行稳定(你不能从 Clover 工具中说出来)。

于 2013-01-09T07:06:02.627 回答
1

免责声明:我是 Atlassian

是的。还有一种替代方法 - 您可以使用 Atlassian Clover 工具。https://confluence.atlassian.com/display/CLOVER/Clover-for-Android提供了 Clover-for-Android 的 alpha 版本

您写道,您希望实现以下目标:

  • 单元测试的代码覆盖率- 是的,Clover 支持“Run as > Android JUnit Test”以及“Run as > JUnit Test” - 即无需启动模拟器(但后者需要稍有不同的设置,如 Clover-for 中所述-安卓手册)
  • 集成测试的代码覆盖率- 如上所述,“Run as > Android JUnit Test”
  • 理想情况下合并代码覆盖率结果——是的,您可以合并来自多个测试运行的代码覆盖率结果;更重要的是,您甚至可以在模拟器或设备中运行您的应用程序并执行手动测试(原文如此!)
  • 发布到 Sonar - 有一个Clover Sonar 插件可用,但是我没有用 Clover-for-Android 测试它;可能您必须在 Eclipse 中运行测试,然后导出 XML 或 HTML 报告(Clover 的 Coverage Explorer 视图中的按钮)并将这些文件推送到 Sonar 构建
于 2012-09-21T09:21:23.320 回答