如何使用Maven(Android Maven插件)在Android中获得代码覆盖率
我有一个Android Maven项目(我们称之为parent_项目),它包含各种子模块:my_library_项目、app_using_my_library_项目、test_项目和extra_库 因此,结构将如下所示:如何使用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
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一起使用。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文件,它可能会工作。