Мы смотрим на переход от phpundercontrol к Hudson (похоже, у него есть некоторые действительно классные функции!), Но я не могу понять, как получить журналы phpunit.
У меня phpunit работает в Hudson с ant, а -log-xml помещает phpunit.xml в соответствующие сборки / папку для этой сборки. Но я не могу понять, как получить это для сборки, чтобы мы могли видеть тесты, которые выполнялись, а какие не удались, если они есть.
После того, как я это выясню, получение покрытия, метрики и api будут следующими 🙂
Похоже, что это должно быть тривиально для всего, что генерирует его на HTML, чтобы рассказать Хадсону, например: «Для этого проекта показана ссылка на« API »для каждой сборки и ссылки для сборки / $ BUILDNUM / api / index.html».
Я установил плагин xUnit, указал его на свой файл журнала (из конфигурации заданий), и он работает как шарм. Похоже, что больше нет необходимости в каких-либо пользовательских хаках.
С последним ответом на 2009 год и большим количеством людей, переезжающих из Хадсона в Дженкинс теперь из-за Oracle , рассмотрим возможность использования шаблона Jenkins для PHP , предлагающего бесплатный и удобный шаблон для всех ваших потребностей в конфигурации PHPQATools , таких как pdepend, phpmd, phpcs и phpunit в одном удобном шаблоне.
Существует также канал IRC # jenkins-php для поддержки Freenode .
вы также можете использовать этот xslt-файл для преобразования phpunit xml в hudson / junit xml:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:element name="testsuites"> <xsl:for-each select="//testsuite[@file]"> <xsl:copy-of select="." /> </xsl:for-each> </xsl:element> </xsl:template> </xsl:stylesheet>
Я обычно работаю с CruiseControl для тестирования PHP (используя поддержку Phing CC, а не phpundercontrol). Я только немного работал с Хадсоном, но Хадсон получил успешную запись тестов phpunit с помощью поддержки phpunit phing.
В следующих инструкциях предполагается, что вы будете использовать Phing (not Ant) для управления вашими сборками проектов PHP и чтобы у вас были необходимые предварительные настройки. Он также предполагает, что у вас установлен PHPUnit 3 (хотя PHPUnit 2.x тоже должен работать).
Шаг 1. Настройка проекта для Phing / PHPUnit
Сначала вам нужно убедиться, что ваш проект можно проверить с помощью Phing. Вот пример Phing build.xml, который запускает модульные тесты и создает JUnit-совместимый вывод XML.
<?xml version="1.0" ?> <project name="Test Project" default="test"> <property name="tests.dir" value="." /> <property name="reports.dir" value="${tests.dir}/reports" /> <target name="test" description="Run PHPUnit tests"> <phpunit haltonerror="true" haltonfailure="true" printsummary="true"> <batchtest> <fileset dir="${tests.dir}"> <include name="**/*Test.php" /> </fileset> </batchtest> <formatter type="plain" usefile="false" /> <formatter type="xml" usefile="true" todir="${reports.dir}" outfile="test-results.xml" /> </phpunit> </target> </project>
Шаг 2: Настройка Хадсона
Шаг 3: Постройте!
Это должно сделать это. Попробуйте построить свой проект сейчас. Надеюсь, он соберет результаты.
Также см. Эту презентацию Phing или эту презентацию Phing для получения дополнительной информации о Phing и (в меньшей степени) интеграции PHPUnit.
Удачи!
Формат XML, испускаемый PHPUnit , не совместим (в настоящее время) с Hudson, потому что он не совсем такой же, как XML, сгенерированный другими подобными инструментами. Вот почему вы получаете сообщение «Ни один из отчетов о тестах не содержит результата».
За исключением исправления PHPUnit для создания «лучшего» XML или улучшения Хадсона, чтобы быть более гибким в том, что он принимает, единственным решением является исправление XML, устраняя вложенность элементов <testuite>. Я использовал sed для изменения PHPUnit XML, чтобы он был приемлемым для Hudson:
# Tweak the test result XML to make it acceptable to Hudson. lines=`wc -l test-results/results.xml|awk '{print $1}'` end=`expr $lines - 1` sed -i "$end d;3d" test-results/results.xml
Преобразование XSLT из предыдущего сообщения не работает для меня. После применения этого преобразования структура DOM отчета не изменяется. Я изменил его, чтобы исправить эту проблему. Мой вариант:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:element name="testsuites"> <xsl:for-each select="//testsuite[@file]/testsuite"> <xsl:copy-of select="." /> </xsl:for-each> </xsl:element> </xsl:template> </xsl:stylesheet>
меня устраивает.
Если вы хотите получить полное руководство по интеграции PHP с Hudson, вы можете проверить эту ссылку:
Непрерывная интеграция для PHP с Хадсоном
Ответ выше действителен, но проще, без изменения процесса сборки:
Я считаю, что xslt, возможно, придется варьировать в зависимости от используемой версии phpunit. Например, таблица стилей, опубликованная хоши, хорошо работала для меня, используя версию phpunit 3.3.17
Но вполне возможно, что phpunit был обновлен, чтобы испускать другой формат в более новых версиях, или sir-vestnik мог запускать более старую версию.