我正在使用其他开发人员创建的一些Android代码,他们要求我在其上运行代码覆盖率度量。它是Android 2.3.3,他们使用ant作为构建文件。我在Ubuntu上运行,而其他开发人员在windows/macs上运行。
如果不考虑SDK/tools/lib/ant/main_rules.xml文件,最后会出现emma的sourceforge页面中描述的错误:找不到类com.vladium.emma.emmajavaTask所需的类: org/apache/tools/ant/taskdefs/Java“
这显然是由于lib目录中同时包含emma_ant.jar和emma.jar造成的。不用说,这里没有提到emma_device.jar。
如果我注释掉project emma.jar这行代码,我就可以构建这个项目。但是,当需要创建一个测试项目来获取检测代码时,运行"ant coverage“将返回
Problem: failed to create task or type emma
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.这让我卡住了。它似乎在寻找emma_properties.config文件,但这似乎只出现在emma.jar中,它被注释掉了……
我觉得我像是在兜圈子,什么也没做。任何帮助都是非常感谢的。
发布于 2011-06-10 01:09:53
把这个问题的答案看作是“在不了解其含义的情况下试图做太多事情”的情况。
EMMA的sourceforge页面建议将emma.jar作为JRE的扩展安装。如果这样做,将会导致与SDK ant工具的冲突。最安全的做法是忽略EMMA sourceforge单独的构建,简单地使用SDK提供的内容。有关如何使其正常工作的说明,请参阅http://developer.android.com的测试部分。
发布于 2011-06-09 13:42:32
我不认为有一种简单的方法来使用ant来获得EMMA的覆盖率,但是使用make并不是那么复杂。首先,您需要设置
EMMA_INSTRUMENT=true在您的环境中创建仪表化构建,然后使用make构建您的应用程序和测试,然后使用
-e coverage 'true'我的下一本书,Android Application Testing Guide,包括一个使用这种技术获得覆盖报告的分步示例:

https://stackoverflow.com/questions/6287032
复制相似问题