如何在HTML中自动生成Android测试报告
我想为Hudson continuous integration server上的Android应用程序自动生成html格式的单元测试报告 因此,我尝试首先运行测试用例并以xml格式收集测试结果文件。然后,我使用JUnitReport任务将XML结果文件转换为HTML格式 我通过Android工具框架运行测试用例。但是,它只提供详细的输出信息,而不是标准的JUnitXML格式。我不知道如何在没有JUnitXML结果文件的情况下生成HTML单元测试报告 如果我使用Eclipse运行测试用例,它可以将结果导出为XML文件,其中包含每个测试用例所消耗的时间信息。这些XML文件可以通过JUnitReport任务正确地转换为HTML。因此,似乎可以收集带有耗时信息的测试结果如何在HTML中自动生成Android测试报告,android,unit-testing,Android,Unit Testing,我想为Hudson continuous integration server上的Android应用程序自动生成html格式的单元测试报告 因此,我尝试首先运行测试用例并以xml格式收集测试结果文件。然后,我使用JUnitReport任务将XML结果文件转换为HTML格式 我通过Android工具框架运行测试用例。但是,它只提供详细的输出信息,而不是标准的JUnitXML格式。我不知道如何在没有JUnitXML结果文件的情况下生成HTML单元测试报告 如果我使用Eclipse运行测试用例,它可以
在Android instrumentation framework上运行测试用例后,是否有任何方法可以自动获取标准JUnit XML结果文件?我认为这是不可能的,因此您需要创建一个实用程序,将Android test runner输出转换为JUnit格式的XML文件
但是,您无法获得每个测试的时间值,因为Android测试运行程序似乎没有输出该信息。我们公司也有类似的问题。我们检查了所有可用的开源解决方案,没有一个是真正完美的。所以我们开发了一个开源的解决方案。我仍然不说是“最终的”,但肯定比雅典娜、python reporter或任何测试后分析都要好得多。你可以在这里找到它: 它规定:
- 每个涉及的包都有单独的XML文件
- XML文件在设备上生成(测试后需要提取)
- 完全支持测试的时间安排
- 我们在失败/错误案例中报告了完整堆栈跟踪
我们能够使用标准测试规则成功运行代码,覆盖率由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一起工作。谢谢刚刚找到了与您类似的解决方案: