我们如何在我们的套件中找到运行时间最长的 junit 测试?junitreport ant 任务的默认输出很有帮助,但是我们的套件将数千个测试组织成许多较小的套件,因此它变得乏味,而且最严重的违规者总是在变化。
我们使用 luntbuild,但理想情况下,我们可以从 ant 中运行它。
我们如何在我们的套件中找到运行时间最长的 junit 测试?junitreport ant 任务的默认输出很有帮助,但是我们的套件将数千个测试组织成许多较小的套件,因此它变得乏味,而且最严重的违规者总是在变化。
我们使用 luntbuild,但理想情况下,我们可以从 ant 中运行它。
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$ 头目标/slow.txt
使用团队城市。他们有很好的报告,4.0 版甚至可以为您的测试排序,因此最不稳定的测试首先运行。
如果您使用巡航控制在构建服务器上启动测试,它是按运行时间排序的顶级选项之一。