如何使用Android中的Ant过滤EMMA生成的测试覆盖率报告中的文件

时间:2011-10-25 09:44:44

标签: android ant code-coverage emma

我有一个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生成的文件仍显示在覆盖率报告中。

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

更新:从Android SDK的修订版r18开始内置过滤,只看到我对链接问题的回答。

another question要求这样做,你已经走了一半路。要解决您的问题,请确保您不修改测试项目构建文件,而是修改目标项目之一。我真的不知道android app构建文件中涉及什么样的蚂蚁魔法,但当然在某种程度上你的目标项目构建文件必须发挥重要作用,所以你必须指定目标项目中的覆盖范围修改。

我整个上午都把这个问题排除在外,所以我希望它对其他开发者有一些价值。

作为旁注,此功能应该是SDK工具的built-in as of revision 16