0

我有一个 Android 项目,我正在使用 Ant 和 EMMA 正确生成测试覆盖率报告(我按照此处的说明进行操作:https ://wiki.jenkins-ci.org/display/JENKINS/Building+an+Android+app +和+测试+项目

我想知道的是如何过滤出现在 EMMA 生成的报告中的文件(例如,R 生成的类、已经测试过的库中的文件......)。

我在自己的 build.xml 文件中包含了 ${sdk.dir}/tools/ant/test_rules.xml 和 ${sdk.dir}/tools/ant/main_rules.xml 并尝试更改“-emma-仪器”目标看起来像这样:

<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 生成的文件仍然出现在覆盖范围内报告。

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

4

1 回答 1

1

更新:过滤是在 android SDK 版本 r18 中内置的,只需查看我对链接问题的回答即可。

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

我花了一上午的时间来整理这件事,所以我希望它对其他开发人员有一些价值。

附带说明一下,此功能应在 SDK 工具的修订版 16 中内置。

于 2011-11-29T12:50:35.123 回答