【问题标题】:How to filter files in the generated test coverage report by EMMA, using Ant in Android如何在 EMMA 生成的测试覆盖率报告中过滤文件,在 Android 中使用 Ant
【发布时间】:2011-10-25 09:44:43
【问题描述】:

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

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

我将 ${sdk.dir}/tools/ant/test_rules.xml 和 ${sdk.dir}/tools/ant/main_rules.xml 都包含在我自己的 build.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>

我还尝试应用此处http://emma.sourceforge.net/reference_single/reference.html#instrset.filters 指定的 EMMA 覆盖过滤器的另一种变体,但这也不起作用,R 生成的文件仍然出现在覆盖报告中。

有人知道怎么解决吗?

【问题讨论】:

    标签: android ant code-coverage emma


    【解决方案1】:

    更新:自 android SDK 的修订版 r18 起内置过滤功能,请参阅我对链接问题的回答。

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

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

    附带说明,此功能应该是 SDK 工具的 built-in as of revision 16

    【讨论】:

    • 感谢您的回答。我在测试 build.xml 上设置了过滤器。
    猜你喜欢
    • 2010-09-08
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多