首页 文章

我在Android上测试代码覆盖的替代方案是什么?

提问于
浏览
7

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

  • 单元测试的代码覆盖率(基于Robolectric,已经使用Cobertura完成)

  • 集成测试的代码覆盖率(基于Robotium- / emulator,目前与Emma分开完成)

  • 理想地合并代码覆盖率结果(这是恕我直言,只能与Cobertura一起使用,并且需要每次测试执行时的原始* .ser文件)

  • 发布到Sonar(目前仅使用单元测试覆盖率,Sonar只了解一种覆盖格式)

我还有其他选择吗?

edit: This post on sonar-devel可能总结了Android代码覆盖支持的当前状态以及Sonar支持 . 叹

3 回答

  • 1

    我已经推送了一个包含你在问题中提到的相同配置的github仓库:

    • 标准android测试emma代码覆盖率

    • robolectric cobertura代码覆盖率(顺便说一句,我认为cobertura与robolectric不兼容)

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

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

    我和一位同事一心想要以与你一样非常相似的心态来处理这个问题 . 我们希望更好地集成不同的测试技术,以便Android项目和报告在声纳中工作 .

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

    斯特凡

    • 更新

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

  • 2

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

  • 6

    Disclaimer: I'm an Atlassian

    是 . 还有另一种选择 - 您可以使用Atlassian Clover工具 . 有一个alpha版本的Clover-for-Android可从https://confluence.atlassian.com/display/CLOVER/Clover-for-Android获得

    您写道,您想要实现以下目标:

    • 单元测试的代码覆盖率 - 是的,Clover支持"Run as > Android JUnit Test"以及"Run as > JUnit Test" - 即没有启动模拟器(但后者需要稍微不同的设置,如Clover-for-Android手册中所述)

    • 集成测试的代码覆盖率 - 如上所述,"Run as > Android JUnit Test"

    • 理想情况下合并代码覆盖率结果 - 是的,您可以合并多个测试运行的代码覆盖率结果;你还能做什么甚至 run your application in emulator or device and perform manual tests (原文如此!)

    • 发布到Sonar - 有一个Clover Sonar Plugin可用,但我没有't test it with Clover-for-Android; probably you would have to run your tests in Eclipse, next export XML or HTML report (button in Clover'的Coverage Explorer视图)并将这些文件推送到Sonar构建

相关问题