0

我正在使用其他开发人员创建的一些 Android 代码,他们要求我对其运行代码覆盖率指标。它是 Android 2.3.3,他们使用 ant 作为构建文件。我在 Ubuntu 上运行,而其他开发人员在 windows/macs 上运行。

如果我单独留下 SDK/tools/lib/ant/main_rules.xml 文件,我最终会遇到 emma 的 sourceforge 页面中描述的错误:找不到类 com.vladium.emma.emmajavaTask 所需的类:org/apache/工具/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 中,被注释掉了......

我觉得我在兜圈子,一无所获。任何帮助表示赞赏。

4

2 回答 2

1

我认为使用 ant 获得 EMMA 覆盖率并不容易,但使用 make 并没有那么复杂。首先你需要设置

EMMA_INSTRUMENT=true

在您的环境中创建一个检测构建,然后使用 make 构建您的应用程序和测试,然后运行检测

-e coverage 'true'

<无耻促销>

我即将出版的书,Android 应用程序测试指南,包括一个使用这种技术获取覆盖率报告的分步示例,如下所示: 艾玛覆盖率

</无耻推广>

于 2011-06-09T05:42:32.130 回答
0

考虑这个问题的答案是“在不了解其含义的情况下尝试做太多事情”。

EMMA 的 sourceforge 页面建议安装 emma.jar 作为 JRE 的扩展。如果这样做,将导致与 SDK ant 工具发生冲突。最安全的做法是忽略 EMMA sourceforge 单独构建,只使用 SDK 为您提供的内容。在http://developer.android.com的测试部分下可以找到有关使其工作的说明。

于 2011-06-09T17:09:52.690 回答