我知道在构建我的 android 测试项目时如何在 ant 中使用 emma,但我找不到任何关于在使用 SDK 时如何使用过滤器的提示。emma 网站在自己调用 emma 时对其进行了解释,但在 Android SDK 构建文件中,在 ant 文件或命令行中未调用 emma,因此我无法添加过滤器选项。
有人有什么建议吗?
我知道在构建我的 android 测试项目时如何在 ant 中使用 emma,但我找不到任何关于在使用 SDK 时如何使用过滤器的提示。emma 网站在自己调用 emma 时对其进行了解释,但在 Android SDK 构建文件中,在 ant 文件或命令行中未调用 emma,因此我无法添加过滤器选项。
有人有什么建议吗?
从 SDK Tools r18 开始,您可以简单地添加
emma.filter=-com.your.excluded.package.*
到您项目的 ant.properties (不是测试项目)
这取决于您使用的 SDK 版本,特别是<android-sdk>/tools/ant
目录中包含的构建文件。
从 SDK r18 及更高版本开始,它就像ant.properties
在目标(而非测试)项目的文件中添加属性一样简单。所以例如使用
emma.filter=-*.test.*
从测试包中排除所有类。您可以在emma 文档中找到 emma 过滤器语法。
这有一个问题。它涉及以下内容:
-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 文档中提供了排除过滤器语法的说明
emma.exclusion.pattern
来提供您自己的排除项对我来说,这就像 SDK 工具 r13 的魅力。