我有一个Android项目,我正在使用Ant和EMMA正确生成测试覆盖率报告(我按照此处的说明进行了操作:https://wiki.jenkins-ci.org/display/JENKINS/Building+an+Android+app+and+test+project)
我想知道的是如何过滤EMMA生成的报告中出现的文件(例如,R生成的类,已经测试过的库中的文件......)
我在自己的build.xml文件中包含了$ {sdk.dir} /tools/ant/test_rules.xml和$ {sdk.dir} /tools/ant/main_rules.xml,我尝试更改“ -emma-instrument“目标看起来像那样:
<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="${verbosity}"
mode="overwrite"
instrpath="${out.absolute.dir}/classes"
outdir="${out.absolute.dir}/classes">
<filter excludes="*R*" />
</instr>
<!-- TODO: exclusion filters on R*.class and allowing custom exclusion from
user defined file -->
</emma>
</target>
我还尝试应用此处指定的EMMA覆盖率过滤器的其他变体http://emma.sourceforge.net/reference_single/reference.html#instrset.filters,但这也不起作用,并且R生成的文件仍显示在覆盖率报告中。
有人知道如何解决这个问题吗?
答案 0 :(得分:1)
更新:从Android SDK的修订版r18开始内置过滤,只看到我对链接问题的回答。
有another question要求这样做,你已经走了一半路。要解决您的问题,请确保您不修改测试项目构建文件,而是修改目标项目之一。我真的不知道android app构建文件中涉及什么样的蚂蚁魔法,但当然在某种程度上你的目标项目构建文件必须发挥重要作用,所以你必须指定目标项目中的覆盖范围修改。
我整个上午都把这个问题排除在外,所以我希望它对其他开发者有一些价值。
作为旁注,此功能应该是SDK工具的built-in as of revision 16。