我知道
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模板中创建的目标,但它们是“私有的”。有什么我想念的吗?
答案 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