我陷害了艾玛,它曾经对我起作用。然后我们进行了源代码更改,现在它根本不生成coverage.ec。它确实生成coverage.em。在测试接近尾声时,它有错误消息:
[exec] INSTRUMENTATION_CODE: 0
[echo] Downloading coverage file into project directory...
[exec] remote object '/sdcard/coverage.ec' does not exist
BUILD FAILED
/var/lib/jenkins/android-sdk-linux_x86/tools/ant/build.xml:1056: exec returned: 1.build.xml的第1056行是
"{adb}" failonerror="true".我看到桌面上确实有coverage.em,这意味着我的代码是被检测的。
我在\test下面使用的命令是
ant emma debug install test这以前对我有用过。运行代码覆盖对我来说总是崩溃,通常是在单元测试结束时,但它总是会给我带来一些覆盖。现在它崩溃了,不产生coverage.em。
我还试图访问/sdcard/,它是完全可访问和可写的。
这已经阻碍了我几天,任何输入都将是非常感谢的。我也是这个机器人的新手,蚂蚁和艾玛,所以谢谢!
Update:我刚刚清理了环境并运行了命令again.Now coverage.em也不再生成了。这就告诉我源代码没有被检测到。但是我上面使用的命令应该是仪器项目,它的测试项目,安装和启动测试。我没有在build.xml中更改emma,只是将coverage.ec位置更改为/sdcard/overage.ec。这是因为默认情况下,它会转到/ data/data,而我没有访问此电话上的数据/数据的权限。
我正在使用Android的r15和默认的build.xml。我只将路径更改为/sdcard/coverage.ec。运行仪表
Go to main_project
$andriod update project -p .
Go to main_prject\test
$android update project -m ../ -p .
To start code code
$ant emma debug install test它生成了main_project-toolented.apk和test_project-调试器and。两者都已安装,我可以看到它执行测试。
发布于 2012-10-25 04:53:47
您必须首先使用android命令行工具进行测试。
创建项目和测试项目
假设您的项目存储在D:\AndroidProject中,并使用android级别8进行编程。
android update project --path ./ --name blabla~ --target android-8 --subprojects 然后为测试项目创建一个文件夹并导航到该文件夹中:
mkdir Android_test
cd Android_test然后使用以下命令创建android测试项目
android create test-project --main ../AndroidProject --path ./带有艾玛覆盖报告的Ant building (带有root)
执行以下命令(从jenkins选择和构建步骤),完成艾玛报告的构建:
ant emma debug install test警告:要想工作,您必须连接根设备或模拟器,然后执行ant命令!
更改构建xml文件(因此不需要根目录)
如果您不想使设备根根,另一种解决方案是更改这些覆盖率报告的位置。为此,您应该修改build.xml文件。
(你应该在谷歌上搜索更多信息,在这里简要解释一下)
打开build.xml ->,查找存储coverage.ec文件的位置。在大多数情况下,这将存储在/data/data/com.example.Android/coverage.ec中。
这里的问题是/data/data/~~~路径受到保护(因此成为所需的根)。
无论如何,您可以在测试项目文件夹/bin中获得一个coverage.html文件。接下来的步骤将解释如何将其更改为将此文件保存在/sdcard上!
您可以打开您的build.xml文件,在最后一行~您可以找到命令import ~~~ build.xml,这意味着您的build.xml文件将导入指定的build.xml文件。
另一个build.xml文件是android的一部分,位于${Android-sdk}/tools/ant/build.xml。
build.xml文件所需的更改
我们不能更改这个文件(不麻烦),所以可以将完整的文件复制到另一个位置,或者直接复制到您的项目build.xml文件中。
不要忘记修改或更改build.xml文件中的导入语句,无论您选择做什么。
这是您需要在新的build.xml文件中更改的内容:
import= ~~build.xmlxml=ejkwjkw?e jw ""project = "android_rule" ~blabla)/project/sdcard/coverage.ec地址然后,您可以获得coverage.ec文件~
发布于 2012-01-01 22:25:03
在将SDK更新为r16:艾玛代码覆盖率在工具的r15中不起作用之后,我遇到了这个问题。
这个帮我修好了:
ant all clean emma debug install test但我不确定你是否也有同样的问题。
我没有权限访问这个电话上的数据/数据
这是一个没有根的装置吗?请注意,生成的内容如下:
WARNING: Code Coverage is currently only supported on the emulator and rooted devices.也许您无法通过更改覆盖率文件的位置来解决这一限制。它在虚拟设备上工作吗?
https://stackoverflow.com/questions/8599097
复制相似问题