如何自动生成HTML中的Android测试报告

时间:2010-02-01 17:58:58

标签: android unit-testing

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

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

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

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

在Android测试框架上运行测试用例后,有没有办法自动获取标准的JUnit XML结果文件?

4 个答案:

答案 0 :(得分:9)

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

它提供:

  • 每个相关包的单独XML文件
  • 在设备上生成XML文件(需要在测试后进行adb拉取)
  • 完全支持测试的时间
  • 我们在故障/错误情况下报告了完整的堆栈跟踪

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

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

答案 1 :(得分:4)

我刚刚看到DroidDudes的Dan Watling使用了一个名为Athena的工具,它看起来和你想要的一样。

你可以在那里找到它:http://droiddudes.com/

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

我认为 athena 方法是最痛苦的,因为您只需在系统上安装athena jar文件并添加以下蚂蚁目标

<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中获得测试结果。这也是您的C​​ruiseControl脚本应该触发的目标。