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



我有一个Android Maven项目(我们称之为parent_project(,它包含各种子模块:my_library_projectapp_using_my_library_projecttest_projectextra_lib

所以,结构应该是这样的:

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生成代码覆盖率报告,如下所示:https://wiki.jenkins-ci.org/display/JENKINS/Building+一个+安卓+应用程序+和+测试+项目(。

我对所使用的代码覆盖工具没有强烈的偏好,但我更喜欢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的插件来完成代码覆盖工作,我认为Cobertura是一个更好的选择,因为Emma稳定的上一次构建是在2005年。

尽管在《安卓应用程序测试指南》(今年6月出版的新书(中,他们谈到了Emma,并演示了如何使用它进行测试,但我认为人们坚持使用它,因为它是从源代码构建安卓系统所必需的(如果谷歌将其用于自己的操作系统开发,它应该是最好的,对吧?(。

如果你没有狂热地绑定到Maven,我强烈建议你试试Robotium。Robotium完全支持活动、对话框、Toast、菜单和上下文菜单。它还支持代码覆盖(不过目前是基于Ant的(,一些人认为它是Android的领先测试平台之一。

编辑:

据Cobertura网站介绍,它支持Maven1和Maven2环境中的代码覆盖。尽管如此,您也可以找到Maven 3的示例。Maven2和Maven3的pom配置之间存在问题。似乎要使报告工作,您必须基本上将旧的报告插件移动到新的maven站点插件

另一种选择是尝试将Sonar与Maven一起使用。Sonar嵌入了cobertura(也有嵌入EMMA的选项(,一些人表示,尽管他们在使用"独立"cobertur插件时遇到了问题,但他们已经成功报告了代码覆盖率。

我可以使用emmaven插件生成代码覆盖率报告,并在声纳中为android应用程序项目显示报告。只需按照中的配置https://code.google.com/p/maven-android-plugin/wiki/EmmaMaven.但对于图书馆项目,我得到了0%的覆盖率。它不生成元数据文件。然而,一旦我将库项目更改为封装为apk,它就会像一个魅力。它在模拟器(在jenkins中配置(中运行测试,并显示覆盖率报告。若你们特别关注图书馆项目,这不会有帮助。如果我找到一些处理图书馆项目的解决方案,我会发帖。

最新更新