![Page 1: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/1.jpg)
Захарченко Иван
![Page 2: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/2.jpg)
Enterprise разработка PHP приложений
HUDSON
![Page 3: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/3.jpg)
Материалы
1.Zend Framework2.PHPUnit3.Mercurial4.Hudson
![Page 4: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/4.jpg)
HUDSONИнструмент непрерывной интеграции (ci).
MercurialРаспределённая система контроля версий.
PHPUnitФрэймворк, основанный на PEAR, предназначенный для модульного тестирования PHP приложений
![Page 5: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/5.jpg)
Подготовка
Установка 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"
![Page 6: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/6.jpg)
Структура проекта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 - класс-предок для всех тесткейсов нашего проекта
![Page 7: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/7.jpg)
Создание теста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/
![Page 8: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/8.jpg)
Настройка 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"
![Page 9: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/9.jpg)
dev #1
dev #2
dev #3repo
tags
![Page 10: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/10.jpg)
Для чего все это?
![Page 11: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/11.jpg)
1. Во время CodeReview нет необходимости просматривать стиль, оформление кода, копипаст и т.д.2. Избавляемся от ручной рутинной работы создания билдов3. Оповещение по email4. Наглядная статистика5. Получение информации о проценте покрытия кода тестами6. Использование zend tool облегчает процесс конструирования проекта7. Использование mercurial проще чем git и имеет практически тот же функционал,
децентрализирует репозиторий, в сравнении с subversion мержи осуществляются с меньшим количеством конфликтов и есть возможность отмены коммита
![Page 12: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/12.jpg)
Источники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/
![Page 13: Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко](https://reader035.vdocuments.pub/reader035/viewer/2022081816/549e734cb37959be618b470b/html5/thumbnails/13.jpg)
СПАСИБО ЗА ВНИМАНИЕ!