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

时间:2011-09-09 11:29:27

标签: android ant filter code-coverage emma

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

有人有什么建议吗?

2 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:5)

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

Android SDK&gt; = 18

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

emma.filter=-*.test.*

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

Android SDK&lt; 18

an issue for this。它涉及以下内容:

  • 您必须修改目标项目(而不是测试项目)的构建文件
  • 通过从导入的android构建文件中复制'n'pasting -emma-instrument目标来修改构建文件(您应该在运行{{1}的标准项目构建文件中找到此方法的说明})
  • 根据链接问题修改目标,它看起来像:

    android create/update project
  • 有关排除过滤器语法的说明,请参见emma documentation

  • 修改修改或使用建议的ant属性<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> 提供您自己的排除

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