【问题标题】:What are my alternatives for test code coverage on Android?在 Android 上测试代码覆盖率的替代方案是什么?
【发布时间】:2012-09-12 11:51:55
【问题描述】:

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

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

我还有其他选择吗?

编辑:This post on sonar-devel 大概总结了 Android 代码覆盖支持以及声纳支持的当前状态。 叹息

【问题讨论】:

    标签: android testing code-coverage cobertura emma


    【解决方案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-Android 手册中所述)
    • 集成测试的代码覆盖率 - 如上所述,“Run as > Android JUnit Test”
    • 理想情况下合并代码覆盖率结果 - 是的,您可以合并来自多个测试运行的代码覆盖率结果;此外,您甚至可以在模拟器或设备中运行您的应用程序并执行手动测试(原文如此!)
    • 发布到 Sonar - 有一个 Clover Sonar Plugin 可用,但我没有使用 Clover-for-Android 对其进行测试;可能您必须在 Eclipse 中运行测试,然后导出 XML 或 HTML 报告(Clover 的 Coverage Explorer 视图中的按钮)并将这些文件推送到 Sonar 构建

    【讨论】:

    • 啊,这个没问题,我稍后试试。虽然确实应该在你的帖子中明确表明你是为 Atlassian 工作...
    【解决方案2】:

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

    【讨论】:

    • 如果您正确阅读了我最初的帖子,您会发现我已经有了基于 Robolectric 的 JUnit 测试...
    【解决方案3】:

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

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

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

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

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

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

    史蒂芬

    -- 更新

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

    【讨论】:

    • 顺便说一句,声纳论坛上的帖子是我的,声纳来源的 evgeny 也有兴趣解决更好的 Android 集成问题。
    • 这至少是一个开始,应该可以帮助其他人,非常感谢!我很想看看 Google 是否想在基于 Gradle 的新版本的测试方面做出任何改变……路线图仍然将 Emma 列为 CC 工具:tools.android.com/tech-docs/new-build-system/roadmap
    • 本次讨论是关于 Jacoco 对 Android 的支持可能会改变游戏规则:github.com/jacoco/jacoco/pull/64#issuecomment-12150910。您愿意为我们的项目做出贡献吗? (或者至少在我们的 github repo 的问题页面中继续讨论它?)
    • 当然,那会很酷。我只是不保证我有时间做出很多贡献。我现在正处于忙碌阶段……我在 gh 的登录名是 tommyd3mdi。
    • 你来了。别担心,我也很着急。但是,如果您有任何想法可以使项目变得更好,请继续。希望在 gh 上见到你。
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2012-01-18
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多