Нужно показывать результаты тестов 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.