在使用ant构建Android测试时,如何使用filter for emma?

Huu*_*pke 7 ant android code-coverage emma filter

我知道在构建我的android测试项目时如何在ant中使用emma但是在使用SDK时我找不到有关如何使用过滤器的任何提示.emma网站在自己调用emma时解释了它,但在Android SDK构建文件中,emma未在ant文件或命令行中调用,因此我无法添加过滤器选项.

任何建议?

Ram*_*mps 10

从SDK Tools r18开始,您只需添加即可

emma.filter=-com.your.excluded.package.*
Run Code Online (Sandbox Code Playgroud)

到你的项目的ant.properties(而不是测试项目)


jek*_*jek 5

这取决于您使用的SDK版本,特别是<android-sdk>/tools/ant目录中包含的构建文件.

Android SDK> = 18

从SDK r18及更高版本开始,就像ant.properties在目标(非测试)项目的文件中添加属性一样简单.所以例如使用

emma.filter=-*.test.*
Run Code Online (Sandbox Code Playgroud)

从测试包中排除所有类.您可以在emma文档中找到emma过滤器语法.

Android SDK <18

这有一个问题.它涉及以下内容:

  • 你必须修改目标项目的构建文件(而不是测试项目)
  • 通过copy'n' -emma-instrument从导入的android构建文件中删除目标来修改构建文件(您应该在运行时获得的标准项目构建文件中找到此方法的说明android create/update project)
  • 根据链接的问题修改目标,它看起来像:

    <target name="-emma-instrument" depends="compile">
        <echo>Instrumenting classes from ${out.absolute.dir}/classes...</echo>
        <!-- It only instruments class files, not any external libs -->
        <emma enabled="true">
            <instr verbosity="trace1"
                   mode="overwrite"
                   instrpath="${out.absolute.dir}/classes"
                   outdir="${out.absolute.dir}/classes">
                <filter excludes="*.R,*.R$$*,${emma.exclusion.pattern}" />
            </instr>
            <!-- TODO: exclusion filters on R*.class and allowing custom exclusion from
                 user defined file -->
        </emma>
    </target>
    
    Run Code Online (Sandbox Code Playgroud)
  • emma文档中提供了排除过滤器语法的说明

  • 修改修改或使用建议的ant属性emma.exclusion.pattern来提供自己的排除

对我来说,这就像SDK工具r13上的魅力一样.