How can we find the junit tests in our suite that take the longest amount of time to run? The default output of the junitreport ant task is helpful, but our suite has thousands of tests organized into many smaller suites, so it gets tedious, and the worst offenders are always changing.
We use luntbuild but ideally it would be something we could just run from ant.
JUnitReport works on the xml files produced by the JUnit task. You could write a task that would read the test durations out of the same xml files (TEST-*.xml). But you can also take a shortcut and just read the summary file created by JUnitReport (TESTS-TestSuites.xml) which has all the information in the single file.
A quick way to do this is to use a bit of xsl to just show the slowest tests:
To run from Ant you do this:
Then you can just look at the first X lines to find the X slowest tests:
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