如何在使用 Robolectric 时计算测试覆盖率

How to calculate test coverage while using Robolectric

我正在使用 make 进行构建,Robolectric 作为 运行 Android 测试的框架。我想计算我的应用程序的覆盖率。对于仪器测试,我曾经使用 emmalib。在这种情况下,我设置覆盖率计算的最佳方法是什么?我无法迁移到 gradle 或 maven。

你和艾玛绑定了吗?使用 RoboElectric + Cobertura 代码覆盖率怎么样? (我认为您可以对上述组合使用 CLI)

所以选项

1.) RoboElectric + Cobertura - 单独的 CLI 可能适用于不使用 ANT 的人

2.) JaCoCo 可能有一些有用的选项

3.) 纯 Android 测试 + Emma/EclEmma

有用的 Link 路径

Generating android code coverage though changes in build.xml and ant.properties

Android Gradle Code Coverage

https://intellectualcramps.wordpress.com/2013/08/18/code-coverage-of-robolectric-tests-using-jacoco/

https://bitbucket.org/ravidsrk/androidstarter

编辑:

不幸的是,我遇到的大多数教程都使用 ant,而且我认为您转向推荐的构建系统(如 Gradle)并不是一个坏主意,因此它打开了一个很多选项。但对于 JaCoCo,您可以在这里查看:https://intellectualcramps.wordpress.com/2013/08/18/code-coverage-of-robolectric-tests-using-jacoco/

更新:

将此从评论移至答案部分,以供任何想查看此内容的人参考,因为这是一个赏金问题

一种解决方案是使用 Cobertura 生成代码覆盖率,它可以集成到 eclipse 中,也可以通过 ant 构建脚本 运行。

可在此处找到此类集成的模板项目:https://github.com/adgllorente/android-cobertura-boilerplate

请注意,所有神奇的事情都发生在测试项目的 build.xml 中。这些任务可能应该概括为一个 custom_rules.xml 文件,这样您仍然可以使用 android 来更新您的项目。

最后,对于 Gradle 你有很多不同的选择:

请注意,您始终可以使用 Gradle 作为辅助构建系统来生成覆盖率报告。 (但是第二个构建系统会引入很多开销)

jacoco 有时无法与 Robelectric 和 powermock runner 一起使用,您可以使用 clover 和 atlassian 工具,它现在是开源工具。