【问题标题】:How to Generate Android Testing Report in HTML Automatically如何自动生成 HTML 格式的 Android 测试报告
【发布时间】:2010-02-01 17:58:58
【问题描述】:

我想在 Hudson 持续集成服务器上为 Android 应用程序自动生成 html 格式的单元测试报告。

因此,我尝试先运行测试用例并收集 xml 格式的测试结果文件。然后,我使用 JUnitReport Task 将 XML 结果文件转换为 HTML 格式。

我通过 Android 检测框架运行测试用例。但是,它只提供详细的输出信息,而不是标准的 JUnit XML 格式。我不知道如何在没有 JUnit XML 结果文件的情况下生成 HTML 单元测试报告。

如果我使用 Eclipse 运行测试用例,它可以将结果导出到 XML 文件中,其中包含每个测试用例所消耗的时间信息。这些 XML 文件可以通过 JUnitReport 任务正确转换为 HTML。结果,似乎可以收集带有时间消耗信息的测试结果。

在Android Instrumentation框架上运行测试用例后,有什么方法可以自动获取标准的JUnit XML结果文件?

【问题讨论】:

    标签: android unit-testing


    【解决方案1】:

    我们公司也有类似的问题。我们检查了所有可用的开源解决方案,但没有一个是真正完美的。所以我们为它开发并开源了一个解决方案。我仍然没有说“终极”,但肯定比 athena 或 python 记者或任何后测分析要好得多。你可以在这里找到它: http://code.google.com/p/the-missing-android-xml-junit-test-runner/

    它提供:

    • 每个涉及的包都有单独的 XML 文件
    • 设备上生成XML文件(测试后需要adb pull'ed)
    • 完全支持测试时间
    • 我们在失败/错误情况下报告了完整的堆栈跟踪

    我们没有分析 java 源代码(如在 athena 中)或分析输出(python 脚本),而是扩展了 android instrumentation runner。因此,我们获得了使用标准命令行选项进行测试选择、覆盖启用等的所有好处 - 全部在此处描述:http://developer.android.com/guide/developing/testing/testing_otheride.html#RunTestsCommand

    我们能够使用标准测试规则成功运行代码,并通过 emma 分析覆盖率,所有这些都在 Jenkins 中得到了很好的报告。

    【讨论】:

    【解决方案2】:

    我认为这不可能,因此您需要创建一个实用程序,将 Android 测试运行程序输出转换为 JUnit 格式的 XML 文件。

    但是,您将无法获得每次测试的时间值,因为 Android 测试运行器似乎没有输出该信息。

    【讨论】:

    • 感谢您的回答。我添加了一个段落作为回应。
    • 有趣;我之前看过 Android 测试运行器输出并查看了源代码,但没有看到任何关于输出时间的信息。所以我想知道它在 Eclipse 中是如何工作的。我想看看 ADT 插件是为了...
    • 我查看了跑步者的来源,也一无所获。但是我发现路径“/development/testrunner”和“/development/tools/ddms”分别有两个用Java和Python编写的测试运行器输出解析器。它们对解析测试运行器的详细输出有很大帮助。令人惊讶的是,它们都使用“性能”作为获取时间信息的关键。此外,路径“/development/testrunner/tests”中输出解析器的测试用例包含性能测试数据。所以我觉得应该有办法开启性能输出。
    • 好吧,虽然我不太确定“性能”指的是什么。这不是您必须检测代码的地方吗?无论如何,前几天我查看了 Android Eclipse 插件,确实有代码计算每次测试运行的时间,因为它是 Eclipse JUnit 基础设施所要求的。 Eclipse 插件测试运行器发送“测试开始”和“测试结束”事件,因此计算执行时间很简单。
    • 为测试用例添加注解@android.test.TimedTest 将使测试运行器输出时间信息。
    【解决方案3】:

    我认为 athena 方法是最不痛苦的,因为您可以简单地在系统上安装 athena jar 文件并添加以下 ant 目标

    <property name="junit.dir" value="${basedir}/junit-results"/>
    <property name="athena.jar" value="/home/cruise/athena/athena-1.1.2.jar"/>
    
    <target name="prepare" description="Setup needed directories">
      <mkdir dir="${junit.dir}"/>
    </target>
    
    <!-- This target will compile/install tested project as well as test project to ensure tests are executed against latest code -->
    <target name="athena" depends="prepare, -install-tested-project, install" description="Run tests and convert result to xml using athena">
      <exec executable="java" os="Linux" failonerror="true">
        <arg value="-cp"/>
        <arg value="${athena.jar}"/>
        <arg value="com.synaptik.athena.Athena"/>
        <arg value="${basedir}"/>
        <arg value="${junit.dir}/TEST-result.xml"/>
      </exec>
    </target>
    

    从命令行只需运行 ant athena 即可获得 xml 中的测试结果。这也是 CruiseControl 脚本应该触发的目标。

    【讨论】:

      猜你喜欢
      • 2022-11-16
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多