是否可以使用Android build.xml简单地编译Emma检测APK并且不运行任何测试

时间:2010-11-01 22:38:43

标签: android

我知道

ant coverage

然而,这做了一些事情,它编译与emma工具,安装,并运行测试apk。我不希望它通过带有覆盖的ant来运行测试套件,因为我需要使用一些额外的钩子运行它,并且我不想运行两次大型测试套件。到目前为止,我已经尝试了这个

Target_Project / build.properties

emma.enabled=true

Test_Project / build.properties

emma.enabled=true

然后在shell中执行此操作。

Target_Project$ ant debug
Target_Project$ adb install bin/Target_Project-debug.apk
Target_Project$ cd ../Test_Project/
Test_Project$ ant debug
Test_Project$ adb install bin/Test_Project-debug.apk
Test_Project$ adb shell am instrument -e coverage true -e coverageFile /sdcard/myFile.ec -w com.my_app.testproject/android.test.InstrumentationTestRunner

回复是

Error: Failed to generate emma coverage. Is emma jar on classpath?

有没有一个技巧让apk使用emma库构建?我尝试调用在sdk xml模板中创建的目标,但它们是“私有的”。有什么我想念的吗?

2 个答案:

答案 0 :(得分:3)

对任何有兴趣的人都好。 SDK文档完全被破坏(我知道很惊讶)。基本上你必须这样做,

获取android create-project生成的base build.xml并更改标记

<setup/>

并将其更改为

<setup import="false"/>

现在文档将告诉您从SDK / platform- / templates / android_rules.xml复制并将其放入build.xml中... 这是错误的并且非常难以维护。任何东西都不使用此规则文件。使用的是SDK / tools / ant /中的规则。使用最新的_r和
抓取适合您的项目类型的文件(库项目的库,测试项目的测试项目或者regualr项目的vanilla) 将其根节点的内容复制到build.xml中。在setup标签后插入它。如果不使用ant目录中的文件,则无法通过ant脚本编译项目库。我很高兴他们保留了如何做到这一点的文件。

现在,您可以在构建文件中更改您喜欢的任何内容,以满足您的构建需求。在这种情况下,我刚刚使用install-helper调用adb周围的包装器,它返回解释的结果代码。

答案 1 :(得分:-1)

// coverage.py

发展\的TestRunner \ coverage.py

def TestDeviceCoverageSupport(adb):   msgstr“”“检查设备是否支持生成代码覆盖率指标。

这会尝试在设备上转储emma帮助信息,包含响应   帮助信息将指示emma已经在系统类路径上。

返回:     如果设备可以支持代码覆盖,则为True否则就错了。   “””   尝试:     output = adb.SendShellCommand(“exec app_process / emma -h”)

if output.find('emma usage:') == 0:
  return True

除了errors.AbortError:     通过   返回False

  

adb shell exec app_process / eamm -h

构建核心图像 http://duykham.blogspot.com/2009/09/how-to-get-emma-code-coverage-of.html