我们怎样才能在我们的套件中找到运行时间最长的junit测试? junitreport ant任务的默认输出很有帮助,但我们的套件有数千个测试组织到许多较小的套件中,所以它变得乏味,而最坏的违规者总是在变化。
我们使用luntbuild但理想情况下我们可以从ant运行。
答案 0 :(得分:11)
JUnitReport适用于JUnit任务生成的xml文件。您可以编写一个任务,从相同的xml文件(TEST - * .xml)中读取测试持续时间。但您也可以使用快捷方式,只读取由JUnitReport(TESTS-TestSuites.xml)创建的摘要文件,该文件包含单个文件中的所有信息。
快速执行此操作的方法是使用一些xsl来显示最慢的测试:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:text> </xsl:text>
<xsl:for-each select="testsuites/testsuite">
<xsl:sort select="@time" data-type="number" order="descending" />
<xsl:value-of select="@name"/> : <xsl:value-of select="@time"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
要从Ant运行,请执行以下操作:
<target name="show.slow.tests">
<xslt in="target/tests-results/TESTS-TestSuites.xml" out="target/slow.txt" style="slow.xsl"/>
</target>
然后你可以看看前X行找到X最慢的测试:
jfredrick $ head target / slow.txt
答案 1 :(得分:2)
使用TeamCity。他们有很棒的报告,4.0版本甚至会对您的测试进行排序,因此最先测试的是最不稳定的测试。
答案 2 :(得分:1)
如果您使用巡航控制在构建服务器上启动测试,它是按运行时间排序的顶级选项之一。