JUnitReport arbeitet mit den von der JUnit-Task erzeugten XML-Dateien. Sie könnten eine Aufgabe schreiben, die die Testdauer aus denselben XML-Dateien (TEST - *. Xml) liest. Sie können aber auch eine Verknüpfung verwenden und nur die von JUnitReport (TESTS-TestSuites.xml) erstellte Übersichtsdatei lesen, die alle Informationen in der einzelnen Datei enthält.
Eine schnelle Möglichkeit, dies zu tun, ist ein bisschen xsl verwenden nur die langsamsten Tests zeigen:
<?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>
von Ant So führen Sie dies tun:
<target name="show.slow.tests">
<xslt in="target/tests-results/TESTS-TestSuites.xml" out="target/slow.txt" style="slow.xsl"/>
</target>
Dann können Sie einfach Blick auf den ersten X-Linien, die die X langsamste Tests zu finden:
jfredrick $ head Ziel/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
Project: 1,743
BuildLoopMonitorTest: 0,913
Nur aus Interesse, warum willst du es wissen? Einer meiner nützlichsten jUnit-Tests braucht eine lange Zeit - nicht weil der Code ineffizient ist, sondern weil er mit sehr erschöpfenden Bedingungen testet (drei für() Schleifen) – slim
Wir haben viele schlecht geschriebene Tests. Manche machen viel unnötiges Setup. Einige Tests verwenden Thread.sleep(). Ein paar brauchen wirklich eine lange Zeit zu laufen. Unsere Suite dauert eine halbe Stunde und ich suche nach den einfachen Zielen, um sie zu beschleunigen. –