Как показать результаты тестов PHPUnit и покрытие тестов в TeamCity

Aug 23, 2013 12:38

Нужно показывать результаты тестов PHPUnit и сохранять статистику результатов тестов в TeamCity.
1. Как показать результаты тестов PHPUnit
Есть замечательная статья про интеграцию PHP и TeamCity в документации к TeamCity 8
Getting started with PHP

Для начала создаем обычный ant таск для запуска тестов. Описание тестов к проэкту лежат в ../tests/phpunit.xml
Сам PHPUnit запусакется файлом phpunit.bat

"phpunit.bat" failonerror="true">

Добавляем этот ant таск как билдстеп в TeamCity


Запускаем и в билдлоге смотрим результаты тестов.


Теперь нам хочется, чтобы тесты были наглядно видны в TeamCity.

TeamCity может принимать сообщения от исполняемых тасков.
Добрый человек написал и поделился специальным враппером над PHPUnit, который посылает такие сообщения в TeamCity

Скачиваем файл phpunit-tc.php и кладем в папку C:\TeamCity

Хитрость в том, чтобы запускать PHPUnit через этот враппер.
Я просто изменил последнюю строку в phpunit.bat, добавив "C:\TeamCity\phpunit-tc.php" сразу после %PHPBIN%:

if "%PHPBIN%" == "" set PHPBIN=c:\lib\php\php.exe
if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH
GOTO RUN
:USE_PEAR_PATH
set PHPBIN=%PHP_PEAR_PHP_BIN%
:RUN
"%PHPBIN%" "C:\TeamCity\phpunit-tc.php" %*

Снова запускаем билд и теперь, ура!, в TeamCity появилась новая вкладка Tests с результатами тестов


2. Как показать покрытие тестов в TeamCity
В таске мы указали PHPUnit записать информацию о покрытии в определенную папку.
TeamCity использует так называемые артефакты (build artefacts), это любые файлы, получаемые на выходе билда. Например файлы с информацией нашего покрытия тестами. Чтобы эти файлы считались артефактом нужно указать это TeamCity. Для этого нужно добавить магическую строку
c:\inetpub\wwwroot\codecoverage\myproject => coverage.zip
В Artifact paths в General Setting билда


Теперь TeamCity архивирует файлы покрытия в coverage.zip, и добавит этот файл в список артефактов билда.

После того как есть артефакт c html файлами внутри, его можно показать отдельной вкладкой в TeamCity.
Идем в Administration->Integrations->Report Tabs->Create new report tab и задаем параметры новой вкладки.


Наконец-то самое главное - у нас появится новая вкладка Code Coverage.


программирование, phpunit, тестирование, php, teamcity, интеграция

Previous post Next post
Up