Ответ 1
Я установил плагин xUnit, указал его на свой файл журнала (из конфигурации заданий), и он работает как шарм. Похоже, что больше нет необходимости в каких-либо пользовательских хаках.
Мы смотрим на переход от 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 (используя CC Phing, а не phpundercontrol). Я только немного работал с Хадсоном, но Хадсон смог успешно записывать тесты phpunit с помощью поддержки phing phpunit.
В следующих инструкциях предполагается, что вы будете использовать Phing (не 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 presentation для более подробной информации о Phing и (в меньшей степени) интеграции PHPUnit.
Удачи!
Формат XML, испускаемый PHPUnit не совместим (в настоящее время) с Hudson, поскольку он не совсем такой же, как генерируемый XML другими подобными инструментами. Вот почему вы получаете сообщение "Ни один из отчетов о тестах не содержит никаких результатов".
За исключением исправления PHPUnit для создания "лучшего" XML или улучшения Hudson, чтобы быть более гибким в том, что он принимает, единственным решением является исправление 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, вы можете проверить эту ссылку:
Ответ выше действителен, но проще, без изменения процесса сборки:
Я считаю, что xslt, возможно, придется варьировать в зависимости от используемой версии phpunit. Например, таблица стилей, опубликованная хоши, хорошо работала для меня, используя версию phpunit 3.3.17
Но вполне возможно, что phpunit был обновлен, чтобы выпустить другой формат в более новых версиях, или sir-vestnik мог запускать более старую версию.