代码之家  ›  专栏  ›  技术社区  ›  Greg Giacovelli

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

  •  6
  • Greg Giacovelli  · 技术社区  · 14 年前

    我知道

    ant coverage
    

    不过,这样做有几点,它使用emma工具编译、安装和运行测试apk。我不想让它通过ant with coverage运行测试套件,因为我需要用一些额外的钩子来运行它,我也不想运行大型测试套件两次。到目前为止我已经试过了

    目标项目/build.properties

    emma.enabled=true
    

    测试项目/生成属性

    emma.enabled=真
    

    然后在一个外壳中我执行这个。

    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 libs一起构建有什么诀窍吗?我试着调用sdk xml模板中创建的目标,但它们是“私有的”。有什么我遗漏的吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Greg Giacovelli    14 年前

    对任何感兴趣的人都好。SDK文档完全被破坏了(我知道这很奇怪)。基本上你必须这么做,

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

    <setup/>
    

    把它改成

    <setup import="false"/>
    

    这是错误的 令人毛骨悚然。此规则文件未被任何人使用。使用的是SDK/tools/ant/中的规则。使用最新的和

    现在可以更改生成文件中的任何内容以满足生成需要。在这种情况下,我刚刚让install helper调用了我在adb周围的包装器,它返回解释的resultcode。

        2
  •  -1
  •   Wonho Seo    13 年前

    //覆盖率.py

    定义测试设备过度支持(adb): “”检查设备是否支持生成代码覆盖率度量。

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

    返回: 如果设备支持代码覆盖,则为True。否则就错了。 """ 尝试:

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

    错误除外。异常终止: 通过 返回False

    adb shell exec应用程序/eamm-h

    http://duykham.blogspot.com/2009/09/how-to-get-emma-code-coverage-of.html