2008-11-10 6 views
8

Как мы можем найти тесты junit в нашем пакете, которые занимают самое большое количество времени? Вывод по умолчанию junitreport ant task полезен, но наш набор содержит тысячи тестов, организованных во множество небольших наборов, поэтому он становится утомительным, и худшие нарушители всегда меняются.Самые длинные тестовые тесты?

Мы используем luntbuild, но в идеале это было бы чем-то, что мы могли бы просто запустить от муравья.

+0

Просто из интереса, почему вы хотите знать? Один из самых полезных тестов jUnit занимает много времени - не потому, что код неэффективен, а потому, что он проверяет очень исчерпывающий набор условий (три для глубоких петель) – slim 2008-11-10 14:54:26

ответ

11

JUnitReport работает с файлами xml, создаваемыми задачей JUnit. Вы можете написать задачу, которая будет считывать длительность теста из тех же 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.913
2

Использование TeamCity. У них отличные отчеты, а версия 4.0 даже заказывает ваши тесты, поэтому сначала запускаются самые яркие тесты.

1

Если вы запускаете свои тесты на своем сервере сборки с помощью круиз-контроля, это один из вариантов верхнего уровня для сортировки по времени выполнения.