首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >艾玛不生成coverage.ec

艾玛不生成coverage.ec
EN

Stack Overflow用户
提问于 2011-12-22 03:22:07
回答 2查看 6.9K关注 0票数 3

我陷害了艾玛,它曾经对我起作用。然后我们进行了源代码更改,现在它根本不生成coverage.ec。它确实生成coverage.em。在测试接近尾声时,它有错误消息:

代码语言:javascript
复制
[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行是

代码语言:javascript
复制
"{adb}" failonerror="true".

我看到桌面上确实有coverage.em,这意味着我的代码是被检测的。

我在\test下面使用的命令是

代码语言:javascript
复制
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。运行仪表

代码语言:javascript
复制
 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。两者都已安装,我可以看到它执行测试。

EN

回答 2

Stack Overflow用户

发布于 2012-10-25 04:53:47

您必须首先使用android命令行工具进行测试。

创建项目和测试项目

假设您的项目存储在D:\AndroidProject中,并使用android级别8进行编程。

代码语言:javascript
复制
android update project --path ./ --name blabla~ --target android-8 --subprojects 

然后为测试项目创建一个文件夹并导航到该文件夹中:

代码语言:javascript
复制
mkdir Android_test
cd Android_test

然后使用以下命令创建android测试项目

代码语言:javascript
复制
 android create test-project --main ../AndroidProject --path ./

带有艾玛覆盖报告的Ant building (带有root)

执行以下命令(从jenkins选择和构建步骤),完成艾玛报告的构建:

代码语言:javascript
复制
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.xml
  • 删除第一行,即xml=ejkwjkw?e jw ""project = "android_rule" ~blabla)
  • 最后一行/project
  • 更新/sdcard/coverage.ec地址

然后,您可以获得coverage.ec文件~

票数 4
EN

Stack Overflow用户

发布于 2012-01-01 22:25:03

在将SDK更新为r16:艾玛代码覆盖率在工具的r15中不起作用之后,我遇到了这个问题。

这个帮我修好了:

代码语言:javascript
复制
ant all clean emma debug install test

但我不确定你是否也有同样的问题。

我没有权限访问这个电话上的数据/数据

这是一个没有根的装置吗?请注意,生成的内容如下:

代码语言:javascript
复制
WARNING: Code Coverage is currently only supported on the emulator and rooted devices.

也许您无法通过更改覆盖率文件的位置来解决这一限制。它在虚拟设备上工作吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8599097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档