我有一个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生成的文件仍然出现在覆盖率报告中。
有人知道怎么解决这个问题吗?
更新:过滤是内置的版本r18的android SDK,只是看看我的回答链接的问题。
这是另一个问题,你已经走了一半了。要解决您的问题,只需确保您做的不是修改测试项目的构建文件,而是修改目标项目的构建文件。我真的不知道android应用程序构建文件中涉及到什么样的ant魔法,但是当然,在某种程度上,你的目标项目构建文件必须发挥重要作用,所以你必须在目标项目中指定覆盖修改是合乎逻辑的。
我花了整个上午来整理这个东西,所以我希望它对其他开发人员有一些价值。
作为旁注,此功能应该在SDK工具的修订版16中内置。