Длительные юнит-тесты? - PullRequest
9 голосов
/ 10 ноября 2008

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

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

Ответы [ 3 ]

11 голосов
/ 11 ноября 2008

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 $ head target / slow.txt

2 голосов
/ 10 ноября 2008

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

1 голос
/ 10 ноября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...