如何在Android中使用Ant对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生成的文件仍然出现在覆盖率报告中。

有人知道怎么解决这个问题吗?

更新:过滤是内置的版本r18的android SDK,只是看看我的回答链接的问题。

这是另一个问题,你已经走了一半了。要解决您的问题,只需确保您做的不是修改测试项目的构建文件,而是修改目标项目的构建文件。我真的不知道android应用程序构建文件中涉及到什么样的ant魔法,但是当然,在某种程度上,你的目标项目构建文件必须发挥重要作用,所以你必须在目标项目中指定覆盖修改是合乎逻辑的。

我花了整个上午来整理这个东西,所以我希望它对其他开发人员有一些价值。

作为旁注,此功能应该在SDK工具的修订版16中内置。

相关内容

  • 没有找到相关文章

最新更新