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

如何在HTML中自动生成Android测试报告,android,unit-testing,Android,Unit Testing,我想为Hudson continuous integration server上的Android应用程序自动生成html格式的单元测试报告 因此,我尝试首先运行测试用例并以xml格式收集测试结果文件。然后,我使用JUnitReport任务将XML结果文件转换为HTML格式 我通过Android工具框架运行测试用例。但是,它只提供详细的输出信息,而不是标准的JUnitXML格式。我不知道如何在没有JUnitXML结果文件的情况下生成HTML单元测试报告 如果我使用Eclipse运行测试用例,它可以

我想为Hudson continuous integration server上的Android应用程序自动生成html格式的单元测试报告

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

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

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


在Android instrumentation framework上运行测试用例后,是否有任何方法可以自动获取标准JUnit XML结果文件?

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


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

我们公司也有类似的问题。我们检查了所有可用的开源解决方案,没有一个是真正完美的。所以我们开发了一个开源的解决方案。我仍然不说是“最终的”,但肯定比雅典娜、python reporter或任何测试后分析都要好得多。你可以在这里找到它:

它规定:

  • 每个涉及的包都有单独的XML文件
  • XML文件在设备上生成(测试后需要提取)
  • 完全支持测试的时间安排
  • 我们在失败/错误案例中报告了完整堆栈跟踪
我们扩展了android instrumentation runner,而不是分析java源代码(如athena)或分析输出(python脚本)。因此,我们获得了使用标准命令行选项进行测试选择、启用覆盖率等的所有好处-这里介绍了所有这些:


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

我认为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>


在命令行中,只需运行antathena,就可以得到xml格式的测试结果。这也是CruiseControl脚本应该触发的目标。

感谢您的回答。我加了一段作为回应;我以前看过Android测试运行器的输出,也看过源代码,但没有看到任何关于输出时间的信息。所以我想知道它在Eclipse中是如何工作的。我想看看ADT插件就可以了……我查看了runner的源代码,也没有发现任何东西。但我发现在路径“/development/testrunner”和“/development/tools/ddms”中分别有两个用Java和Python编写的测试运行程序输出解析器。它们对解析测试运行程序的详细输出有很大帮助。令人惊讶的是,它们都使用“性能”作为获取时间信息的关键。此外,路径“/development/testrunner/tests”中输出解析器的测试用例包含性能测试数据。所以我认为应该有一种方法来打开性能输出。啊,好吧,尽管我不太确定“性能”指的是什么。这不是你必须插入代码的地方吗?无论如何,前几天我看了安卓Eclipse插件,它确实有计算每次测试运行时间的代码,正如EclipseJUnit基础设施所要求的那样。Eclipse插件测试运行程序发送“test started”和“test ended”事件,因此在执行时计算执行时间非常简单。为测试用例添加annotation@android.test.TimedTest将使测试运行程序输出时间信息。刚刚尝试了您的解决方案,它几乎可以与Jenkins一起工作。谢谢刚刚找到了与您类似的解决方案: