运行时间最长的单元测试?

Cra*_*lin 9 junit unit-testing

我们怎样才能在我们的套件中找到需要最长时间运行的junit测试?junitreport ant任务的默认输出很有帮助,但我们的套件有数千个测试组织到许多较小的套件中,因此它变得乏味,而最坏的违规者总是在变化.

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

Jef*_*ick 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>
Run Code Online (Sandbox Code Playgroud)

要从Ant运行,请执行以下操作:

<target name="show.slow.tests">
    <xslt in="target/tests-results/TESTS-TestSuites.xml" out="target/slow.txt" style="slow.xsl"/>
</target>
Run Code Online (Sandbox Code Playgroud)

然后你可以看看前X行找到X最慢的测试:

jfredrick $ head target/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.913