7

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

有人有什么建议吗?

4

2 回答 2

10

从 SDK Tools r18 开始,您可以简单地添加

emma.filter=-com.your.excluded.package.*

到您项目的 ant.properties (不是测试项目

于 2012-06-16T07:21:41.363 回答
5

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

Android SDK >= 18

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

emma.filter=-*.test.*

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

安卓 SDK < 18

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

  • 您必须修改目标项目的构建文件(而不是测试项目)
  • 通过从导入的android构建文件中复制'n'粘贴-emma-instrument目标来修改构建文件(您应该在通过运行获得的标准项目构建文件中找到此方法的说明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>
    
  • emma 文档中提供了排除过滤器语法的说明

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

对我来说,这就像 SDK 工具 r13 的魅力。

于 2011-11-29T12:41:12.633 回答