如何使用Maven(Android Maven插件)在Android中获得代码覆盖率

如何使用Maven(Android Maven插件)在Android中获得代码覆盖率,android,maven,code-coverage,Android,Maven,Code Coverage,我有一个Android Maven项目(我们称之为parent_项目),它包含各种子模块:my_library_项目、app_using_my_library_项目、test_项目和extra_库 因此,结构将如下所示: parent_project * my_library_project (Android Library Project) * app_using_my_library_project (Demo app that uses the Android Library

我有一个Android Maven项目(我们称之为parent_项目),它包含各种子模块:my_library_项目、app_using_my_library_项目、test_项目和extra_库

因此,结构将如下所示:

parent_project
   * my_library_project (Android Library Project)
   * app_using_my_library_project (Demo app that uses the Android Library Project)
   * test_project (Project containing the tests instrumented against app_using_my_library_project)
   * extra_lib
我想要的是使用Maven为我的Android项目生成测试覆盖率(而不是Ant,我已经能够使用Ant生成代码覆盖率报告,遵循以下说明:)

我对使用的代码覆盖工具没有强烈的偏好,但我更喜欢EMMA,因为它似乎是Android开发世界中最常见的工具

我正在使用android maven插件(http://code.google.com/p/maven-android-plugin/)在其3.0.0-alpha-12版本中,我已经尝试在下一个版本中加入我父母的pom.xml的配置:

<test>
  <coverage>true</coverage>
  <createreport>true</createreport>
</test>

真的
真的
但这并不能生成所需的代码覆盖率报告

因此:

  • 为标准Java项目和Android项目获取代码覆盖率的pom配置之间有什么区别吗
  • 你知道任何使用Maven的Android项目都有代码覆盖率吗?
  • 有没有关于如何做到这一点的提示

如果你打算坚持使用maven,并且想要一个maven插件来完成代码覆盖工作,我认为这是一个更好的选择,因为稳定的上一次构建是从2005年开始的

尽管在(今年6月的一本新书)中,他们谈到了Emma,并演示了如何使用它进行测试,但我认为人们还是坚持使用它,因为需要从源代码构建Android(如果谷歌将它用于自己的操作系统开发,它应该是最好的,对吧?)

如果你不是狂热地迷上Maven,我强烈建议你试试。 Robotium完全支持活动、对话框、祝酒、菜单和上下文菜单。 它还支持代码(尽管目前基于Ant),一些人认为它是Android的领先测试平台之一

编辑:

根据,它支持Maven 1和Maven 2环境中的代码覆盖率。尽管如此,您也可以在Maven 3中找到。 Maven 2和Maven 3的pom配置之间存在问题。为了让报告正常工作,您必须基本上将旧的报告插件移动到新maven站点插件的配置部分。(详见文章)


另一个选择是尝试与Maven一起使用。Sonar已经嵌入了cobertura(也可以选择嵌入),一些人表示他们已经成功报告了代码覆盖率,尽管他们在使用“独立”cobertura插件时遇到了问题

我可以使用emma maven插件生成报告的代码覆盖率,并在sonar中为android应用程序项目显示报告。只需按照中的配置操作即可。 但对于图书馆项目,我得到了0%的覆盖率。它不会生成元数据文件。然而,只要我将库项目更改为打包为apk,它就会像一个魅力。它在模拟器(在jenkins中配置)中运行测试,并显示覆盖率报告。
如果你是专门为图书馆项目寻找,这是没有帮助的。如果我找到了一些处理图书馆项目的解决方案,我会发帖。

你根本没有收到报告吗?你得到一份无关的报告?你得到的报告可能很有趣,但你不喜欢答案?“不获取报告”的符号是什么?是的,我根本没有使用Maven获取测试覆盖率报告。我做了很多研究,但没有发现任何关于配置Maven以在Android中获得测试覆盖率的信息。我在我的父pom.xml中尝试了该配置,该配置似乎与我的问题有关,我在这里找到了:。我没有像在标准Java项目中那样尝试在EMMA的pom.xml中包含依赖项,但我不确定它是否会起作用,因此我的问题是,我并不特别熟悉Maven。它是否声称支持在Android上运行测试?如果没有,你为什么期望它能工作呢?是的,Maven能够构建Android项目并自动运行所有测试,生成一份关于结果的报告(如果通过或不通过,需要多长时间…)。但是我想要的,而且我似乎无法做到的,是得到一个代码覆盖率报告,它告诉我代码的哪些部分已经过测试,哪些部分还没有经过测试。谢谢你的建议,我将尝试使用Cobertura获得我想要的,并报告我发现的情况。在我的问题中我是这样说的,目前我正在使用Ant来获得(一些)测试覆盖率,尽管我更希望能够用Maven完成所有事情。我已经在使用Robotium(在设备中进行测试,以确保一切都按预期进行)和Robolectric(更快的测试,在开发过程中更合适),但问题是我无法将Robolectric测试放在Android测试项目中,所以我不知道如何使用Ant获得完整的测试覆盖率报告。你使用哪一版本的Maven?ApacheMaven 3.0.3(r1075438;2011-02-28 18:31:09+0100)和android Maven插件3.0.0-alpha-13。sonar项目看起来很有希望,如果您尝试并获得成功的代码覆盖率报告,请告诉我们:)。如果您希望基于设备本身上运行的代码实现覆盖率,则必须使用Emma,因为Dalvik VM与基于live ClassLoader的instrumentation jiggery Porky不能很好地配合使用。Emma用于插入.class文件,然后将其转换(索引)为Dalvik文件。如果有一个覆盖率工具在dex步骤之前检测.class文件,它可能会工作。