Your SlideShare is downloading. ×
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко

577
views

Published on


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
577
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ЗахарченкоИван
  • 2. HUDSONEnterprise разработкаPHP приложений
  • 3. Материалы• Zend Framework• PHPUnit• Mercurial• Hudson
  • 4. HUDSON Инструмент непрерывной интеграции (ci).Mercurial Распределённая система контроля версий.PHPUnit Фрэймворк, основанный на PEAR, предназначенный для модульного тестирования PHP приложений
  • 5. ПодготовкаУстановка 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"
  • 6. Структура проектаproject phpunit.xml - конфигурационный файл PHPUnit|-- application|-- data|-- docs bootstrap.php - загрузчик приложения, аналогичен index.php|-- library|-- public ControllerTestCase.php - класс-предок для всех тесткейсов`-- tests нашего проекта |-- application | |-- models | | `-- PageTest.php | |-- controllers | | |-- IndexControllerTest.php | | `-- ErrorControllerTest.php | |-- ControllerTestCase.php | `-- bootstrap.php |-- library | `-- bootstrap.php `-- phpunit.xml
  • 7. Создание тестаIndexControllerTest.php ErrorControllerTest.php<?php <?phpclass IndexControllerTest extends ControllerTestCase{ class ErrorControllerTest extends ControllerTestCase{ public function testTestAction(){ public function testErrorURL(){ $this->dispatch(/); $this->dispatch(foo); $this->assertModule(default); $this->assertModule(default); $this->assertController(index); $this->assertController(error); $this->assertAction(index); $this->assertAction(error); } }} } PHPUnit 3.7 by Sebastian Bergmann. Time: 0 seconds OK (3 tests, 7 assertions) Generating code coverage report, this may take a moment.Смортим отчет http://%project%/tests/reports/
  • 8. Настройка HUDSON• Добавляем job• В разделе Source Code Management указываем путь к нашему репозиторию• Указываем расписание сборокпроверок cron строкой в разделе Build Triggers• В разделе Build указываем вызов наших тестов "phpunit path-to-zf-project/tests/"• В разделе Post-build Actions ставим checkbox для Public JUnit test result report, а в Test report XMLs указываем hudson.xml• В том же разделе Post-build Actions ставим checkbox для E-mail Notification. Указываем получателей через пробел в строке recipients. И ставим checkbox на Send e-mail for every unstable buildЗ.Ы. hudson.xml генерируем из xml отчета phpunit в нужном формате, либосамописным скриптом, либо с помощью "phpunit2hudson"
  • 9. dev #1 tagsdev #2dev #3 repo
  • 10. Для чего все это?
  • 11. • Во время CodeReview нет необходимости просматривать стиль, оформление кода, копипаст и т.д.• Избавляемся от ручной рутинной работы создания билдов• Оповещение по email• Наглядная статистика• Получение информации о проценте покрытия кода тестами• Использование zend tool облегчает процесс конструирования проекта• Использование mercurial проще чем git и имеет практически тот же функционал, децентрализирует репозиторий, в сравнении с subversion мержи осуществляются с меньшим количеством конфликтов и есть возможность отмены коммита
  • 12. Источники• http://pear.php.net/• http://www.phpunit.de/• http://framework.zend.com/• http://anton.shevchuk.name/php/unit-tests-zend-framework-application/• http://habrahabr.ru/blogs/php/98832/• http://www.smartyit.ru/php/
  • 13. СПАСИБО ЗА ВНИМАНИЕ!