9

我们如何在我们的套件中找到运行时间最长的 junit 测试?junitreport ant 任务的默认输出很有帮助,但是我们的套件将数千个测试组织成许多较小的套件,因此它变得乏味,而且最严重的违规者总是在变化。

我们使用 luntbuild,但理想情况下,我们可以从 ant 中运行它。

4

3 回答 3

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$ 头目标/slow.txt

    ForcingBuildShouldNotLockProjectInQueuedStateTest:11.581
    CruiseControlControllerTest:7.335
    AntBuilderTest:6.512
    Maven2BuilderTest:4.412
    CompositeBuilderTest: 2.222
    ModificationSetTest:2.05
    NantBuilderTest:2.04
    CruiseControlConfigTest: 1.747
    ProjectTest:1.743
    BuildLoopMonitorTest:0.
于 2008-11-11T08:42:04.537 回答
2

使用团队城市。他们有很好的报告,4.0 版甚至可以为您的测试排序,因此最不稳定的测试首先运行。

于 2008-11-10T14:13:10.703 回答
1

如果您使用巡航控制在构建服务器上启动测试,它是按运行时间排序的顶级选项之一。

于 2008-11-10T14:19:33.903 回答