Как я могу интегрировать phpunit с Hudson CI?


Мы рассматриваем возможность перехода с phpundercontrol на Hudson (похоже, у него есть действительно классные функции!) но я не могу понять, как заставить журналы phpunit отображаться.

У меня phpunit отлично работает в Гудзоне с ant, и --log-xml помещает phpunit.xml в соответствующих сборках/папке для этой сборки. Но я не могу понять, как сделать так, чтобы это отображалось при сборке, чтобы мы могли видеть тесты, которые были запущены и которые завершились неудачей, если таковые имеются.

После того, как я это выясню, получив охват, показатели и api будут следующими:)

Похоже, что для всего, что генерирует его в HTML, должно быть тривиальным, например, сказать Хадсону: "Для этого проекта покажите ссылку на "API" для каждой сборки и ссылку на сборки/$BUILDNUM/api/index.html ".

Author: mrooney, 2009-02-06

9 answers

Я установил плагин xUnit, указал на него в своем файле журнала (из конфигурации задания), и он работает как заклинание. Похоже, что больше нет необходимости в каких-либо пользовательских взломах.

Http://wiki.hudson-ci.org/display/HUDSON/xUnit +Плагин

 24
Author: user179291, 2009-09-25 21:21:47

С последним ответом от 2009 года и многие люди мигрируют из Хадсона в Дженкинс сейчас благодаря Oracle, рассмотрите возможность использования шаблона Дженкинса для PHP, предлагая бесплатный и удобный шаблон для всех ваших потребностей в конфигурации PHPQATOOLS, таких как pdepend, phpmd, phpcs и phpunit в одном удобном шаблон.

Также есть IRC-канал #дженкинс-php на свободном узле для поддержки.

 7
Author: Gordon, 2011-03-23 16:02:44

Вы также можете использовать этот файл xslt для преобразования xml phpunit в xml hudson/junit:

<?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>
 5
Author: user126134, 2009-06-20 10:29:26

Я обычно работаю с CruiseControl для тестирования PHP (используя поддержку CC Phing, а не phpundercontrol). Я работал с Хадсоном совсем немного, но заставил Хадсона успешно записывать тесты phpunit, используя поддержку phpunit от phing.

Следующие инструкции предполагают, что вы будете использовать Phing (а не Ant) для управления сборками вашего PHP-проекта и что у вас установлены необходимые предварительные требования. Также предполагается, что у вас установлен PHPUnit 3 (хотя PHPUnit 2.x должен тоже работай).

Шаг 1: Проект настройки для Phing/PHPUnit

Сначала вам нужно убедиться, что ваш проект можно протестировать с помощью Phing. Вот образец Финга build.xml который запускает модульные тесты и создает XML-вывод, совместимый с JUnit.

<?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: Настройка Хадсона

  1. Установите плагин Phing для Hudson. Обратите внимание, что вам может потребоваться установить Phing как отдельный пакет (я вставил его в /opt/phing-2.3.3) и настроить PHING_HOME в Конфигурация Хадсона указывает на этот каталог. Вы также должны иметь возможность использовать установленный на PEAR Phing; однако я этого не проверял.
  2. Настройте Hudson для создания вашего проекта с помощью Phing.
  3. Настройте Hudson для сбора тестов JUnit из вашего проекта. Имя нашего файла результатов будет test-results.xml . В приведенном выше примере вы бы настроили его для сбора файлов из отчетов/*.xml.

Шаг 3: Стройте!

Этого должно хватить. Попробуйте построить свой проект сейчас. Надеюсь, он соберет результаты.

Также смотрите эту презентацию Phing или эту презентацию Phing для получения дополнительной информации о Phing и (в меньшей степени) Интеграция с PHPUnit.

Удачи!

 4
Author: Hans L, 2009-02-06 14:55:45

Формат XML, создаваемый PHPUnit , (в настоящее время) несовместим с Hudson, поскольку он не совсем совпадает с XML, создаваемым другими аналогичными инструментами. Вот почему вы получаете сообщение "Ни один из отчетов об испытаниях не содержал никаких результатов".

Если не считать исправления PHPUnit для создания "лучшего" XML или улучшения Hudson, чтобы он был более гибким в том, что он принимает, единственным решением является исправление XML путем устранения вложенности элементов . Я использовал sed для измените XML-файл PHPUnit так, чтобы он был приемлем для Хадсона:

# 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
 2
Author: Dan Dyer, 2009-03-31 13:21:55

Преобразование 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>

Это работает для меня.

 2
Author: VestniK, 2009-06-25 11:19:47

Если вы хотите получить полный учебник по интеграции PHP с Hudson, вы можете проверить эту ссылку:

Непрерывная интеграция PHP с Hudson

 2
Author: manumoomoo, 2009-11-05 19:47:13

Приведенный выше ответ верен, но более прост, без изменения процесса сборки:

  • Настройте свой проект
  • Установите флажок публичный отчет JUnit (см. http://thinkvitamin.com/images/articles/hudson/hudson_setup.png ), и заполните местоположение "phpunit.xml в соответствующих сборках/папке"
  • надеюсь, в следующей сборке будет содержаться тенденция и более подробная информация о ваших тестах, как здесь https://hudson.dev.java.net/screenshots/5.png
 0
Author: , 2009-03-14 20:44:03

Я полагаю, что xslt, возможно, придется варьировать в зависимости от используемой версии phpunit. Например, таблица стилей, опубликованная хоши, хорошо работала для меня, используя phpunit версии 3.3.17

Но вполне возможно, что phpunit был обновлен для выпуска другого формата в более новых версиях, или sir-vestnik мог использовать более старую версию.

 0
Author: Saem, 2009-06-30 21:30:41