对于Android上的测试代码覆盖率,我的备选方案是什么?

对于Android上的测试代码覆盖率,我的备选方案是什么?,android,testing,code-coverage,cobertura,emma,Android,Testing,Code Coverage,Cobertura,Emma,我知道Android的Ant工具带有内置的Emma代码覆盖范围,但Emma的报告看起来越来越过时,无法轻松集成到其他覆盖范围报告甚至Sonar中,这主要是因为Emma缺乏详细的XML报告格式。我想要达到的是 单元测试的代码覆盖率(基于Robolectric,已经使用Cobertura完成) 集成测试的代码覆盖率(基于Robotium-/emulator,目前使用Emma单独完成) 理想情况下合并代码覆盖率结果(这仅适用于Cobertura,并且需要每次测试执行中的原始*.ser文件) 发布到S

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

  • 单元测试的代码覆盖率(基于Robolectric,已经使用Cobertura完成)
  • 集成测试的代码覆盖率(基于Robotium-/emulator,目前使用Emma单独完成)
  • 理想情况下合并代码覆盖率结果(这仅适用于Cobertura,并且需要每次测试执行中的原始*.ser文件)
  • 发布到Sonar(目前仅在单元测试覆盖范围内完成,据我所知Sonar仅了解一种覆盖格式)
我有别的选择吗


编辑:大概概括了Android代码覆盖率支持和声纳支持的现状。叹气

免责声明:我是亚特兰西人

对。还有一种选择-您可以使用Atlassian Clover工具。有一个alpha版本的Clover for Android可从

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

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

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

我推出了一个github回购协议,其中包含与你在问题中提到的配置相同的配置:

  • 标准android测试+emma代码覆盖率
  • robolectric+cobertura代码覆盖率(顺便说一句,我认为cobertura与robolectric不兼容)
并将其包含在声纳中。一次只有一个,但配置仍然是一个有趣的基础

我和一位同事打算以与你非常相似的心态来处理这个问题。我们希望能够更好地集成不同的测试技术,以用于Android项目,并报告sonar的工作情况

如果您想加入我们的努力,我们将很高兴为您提供回购权利,并开始与您合作

圣菲

--更新


自2013年3月以来,我们还提出了一个统一的配置,将Jacoco离线仪器用于机器人分子测试和标准junit测试,并在声纳中同时显示结果。

啊,这一切都很好,我稍后会尝试。虽然你真的应该在你的帖子中明确你是为Atlassian工作的…如果你正确地阅读了我最初的帖子,你会看到我已经有了基于机器人的JUnit测试,并且已经覆盖了JUnit测试…顺便说一句,sonar论坛上的帖子是我的,sonar source的evgeny也有兴趣解决更好的Android集成问题。这至少是一个开始,应该对其他人有所帮助,非常感谢!我很感兴趣地想看看谷歌是否想改变关于使用新的基于Gradle的构建进行测试的任何事情。。。路线图仍然将Emma列为CC工具:本次讨论是关于Jacoco对Android的支持可能会改变游戏:。你愿意为我们的项目捐款吗?(或者至少在我们的github回购协议的发行页面上继续谈论它?)当然,那会很酷。我只是不能保证我有时间做很多贡献。我现在正处于紧张阶段。。。我在gh的登录名是tommyd3mdi。你在。别担心,我也很忙。但是如果你有任何想法可以让这个项目更好,请继续。希望在gh上见到你。