2011-06-09 23 views
0

我正在处理一些由其他开发人员创建的Android代码,并且他们要求我对它运行代码覆盖度度量。它是Android 2.3.3,他们使用ant来构建它们的文件。我在Ubuntu上运行,而其他开发人员在Windows/Mac上运行。Android,emma,ant和与蚂蚁相关的错误

如果我单独离开SDK/tools/lib/ant/main_rules.xml文件,就会发现emma的sourceforge页面描述的错误:无法找到类com.vladium.emma.emmajavaTask所需的类:组织/阿帕奇/工具/蚂蚁/任务定义/ 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

考虑这个问题的答案的情况下,“试图做太多的不理解的含义。”

EMMA的sourceforge页面建议安装emma.jar作为JRE的扩展。如果你这样做,你将会与SDK ant工具产生冲突。最安全的事情是忽略EMMA sourceforge独立构建,并简单地使用SDK给你的东西。在测试部分下的中找到了使其工作的说明。

1

我不认为用蚂蚁获得EMMA覆盖是一种简单的方法,但使用make并没有那么复杂。首先,你需要设置

EMMA_INSTRUMENT=true 

在你的环境中创建一个仪表的构建,然后构建应用程序,并使用测试做,然后运行与

-e coverage 'true' 

<无耻的推广>

仪器

我的即将出版的书Android Application Testing Guide包括使用此技术获得如下覆盖率报告的分步示例: EMMA coverage

< /无耻的推广>

+0

Diego, 我很忠实地阅读你的博客,我正在等你的书。我的问题是双重的:1.“环境”意味着在.bashrc中设置变量,对吗? 2.你在说什么“制造”命令?虽然我以前使用Eclipse自动构建了一些东西,但我无法在此使用它。我对Java基础结构知之甚少,不知道make是javac还是其他的东西。 – Kevin 2011-06-09 15:57:06

+0

蚂蚁的覆盖通常会给我一些令人讨厌的编译错误,但是这些错误并没有使用完全相同的源代码和make。但你的里程可能会有所不同 – 2011-06-09 20:03:42

+0

Make是一个构建工具[http://en.wikipedia.org/wiki/Make_(software)] – 2011-06-09 20:04:27