我正在使用其他开发人员创建的一些Android代码,他们已经让我在其上运行代码覆盖率指标。这是Android 2.3.3,他们使用ant作为他们的构建文件。我在Ubuntu上运行,而其他开发人员在Windows / Mac上运行。
如果我单独留下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。
如果我注释掉寻找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中,这被注释掉了......
我觉得我已经进入了圈子并且没有取得任何成就。任何帮助表示赞赏。
答案 0 :(得分:1)
我认为使用ant获取EMMA覆盖是一种简单的方法,但使用make并不是那么复杂。首先,你需要设置
EMMA_INSTRUMENT=true
在您的环境中创建一个检测版本,然后使用make构建您的应用程序和测试,然后使用
运行检测-e coverage 'true'
&LT;无耻推广&GT;
我即将出版的书籍Android Application Testing Guide包含了使用此技术获取此类报道报告的分步示例:
&LT; /无耻推广&GT;
答案 1 :(得分:0)
考虑这个案例的答案“在不理解其含义的情况下试图做太多。”
EMMA的sourceforge页面建议安装emma.jar作为JRE的扩展。如果这样做,将导致与SDK ant工具发生冲突。最安全的做法是忽略EMMA sourceforge单独构建并简单地使用SDK为您提供的内容。有关将其付诸实施的说明,请参见测试部分的http://developer.android.com。