Захарченко Иван
Enterprise разработка PHP приложений
HUDSON
Материалы
1.Zend Framework2.PHPUnit3.Mercurial4.Hudson
HUDSONИнструмент непрерывной интеграции (ci).
MercurialРаспределённая система контроля версий.
PHPUnitФрэймворк, основанный на PEAR, предназначенный для модульного тестирования PHP приложений
Подготовка
Установка PEAR• скачать http://pear.php.net/go-pear.phar• выполнить "php go-pear.phar" (в windows настроить переменные среды)• проверка "pear version"
Установка PHPUnit• выполнить "pear channel-discover pear.phpunit.de"• выполнить "pear install phpunit/PHPUnit"
Настройка Zend_Tool• linux: прописываем alias zf для "zend/bin/zf.sh"• windows: указываем путь к директории "zend/bin/" в переменных среды• проверка "zf"
Создание проекта• выполнить "zf create project zf-project"
Запуск теста• выполнить "phpunit --log-junit path-to-zf-project/tests/tmp.xml path-to-zf-project/tests"
Структура проектаproject|-- application|-- data|-- docs|-- library|-- public`-- tests |-- application | |-- models | | `-- PageTest.php | |-- controllers | | |-- IndexControllerTest.php | | `-- ErrorControllerTest.php | |-- ControllerTestCase.php | `-- bootstrap.php |-- library | `-- bootstrap.php `-- phpunit.xml
phpunit.xml - конфигурационный файл PHPUnit
bootstrap.php - загрузчик приложения, аналогичен index.php
ControllerTestCase.php - класс-предок для всех тесткейсов нашего проекта
Создание тестаIndexControllerTest.php
<?phpclass IndexControllerTest extends ControllerTestCase{
public function testTestAction(){ $this->dispatch('/'); $this->assertModule('default'); $this->assertController('index'); $this->assertAction('index'); }}
PHPUnit 3.7 by Sebastian Bergmann.Time: 0 secondsOK (3 tests, 7 assertions)Generating code coverage report, this may take a moment.
ErrorControllerTest.php
<?phpclass ErrorControllerTest extends ControllerTestCase{
public function testErrorURL(){ $this->dispatch('foo'); $this->assertModule('default'); $this->assertController('error'); $this->assertAction('error'); }}
Смортим отчет http://%project%/tests/reports/
Настройка HUDSON
1. Добавляем job2. В разделе Source Code Management указываем путь к нашему репозиторию3. Указываем расписание сборок\проверок cron строкой в разделе Build Triggers4. В разделе Build указываем вызов наших тестов "phpunit path-to-zf-project/tests/"5. В разделе Post-build Actions ставим checkbox для Public JUnit test result report, а
в Test report XMLs указываем hudson.xml6. В том же разделе Post-build Actions ставим checkbox для E-mail Notification.
Указываем получателей через пробел в строке recipients. И ставим checkbox на Send e-mail for every unstable build
З.Ы. hudson.xml генерируем из xml отчета phpunit в нужном формате, либо самописным скриптом, либо с помощью "phpunit2hudson"
dev #1
dev #2
dev #3repo
tags
Для чего все это?
1. Во время CodeReview нет необходимости просматривать стиль, оформление кода, копипаст и т.д.2. Избавляемся от ручной рутинной работы создания билдов3. Оповещение по email4. Наглядная статистика5. Получение информации о проценте покрытия кода тестами6. Использование zend tool облегчает процесс конструирования проекта7. Использование mercurial проще чем git и имеет практически тот же функционал,
децентрализирует репозиторий, в сравнении с subversion мержи осуществляются с меньшим количеством конфликтов и есть возможность отмены коммита
Источники1. http://pear.php.net/2. http://www.phpunit.de/3. http://framework.zend.com/4. http://anton.shevchuk.name/php/unit-tests-zend-framework-application/5. http://habrahabr.ru/blogs/php/98832/6. http://www.smartyit.ru/php/
СПАСИБО ЗА ВНИМАНИЕ!
Recommended