Как да свържа PHPUnit с моя код?

Бих искал да:

  • Изпълнявайте тестове с PHPUnit независимо от моята среда (и дали PHPUnit или PEAR са инсталирани или не)
  • Покажете резултатите от теста на екрана, ако е възможно

Как мога да направя това? Опитах се да изтегля кода тук и да включа Autoload.php, но той все още има някои зависимости. Може би има някакъв по-добър подход за това, отколкото да се опитвам да го обвържа с моя код...?


person Hugo Mota    schedule 01.10.2012    source източник


Отговори (3)


За да включите PHPUnit в изходните файлове на вашите проекти, предлагам да следвате ръководството:

Using PHPUnit From a Git Checkout от раздела PHPUnit Contributung.

Той ви разказва за всички пакети, които трябва да инсталирате, и ви показва, за да създадете скрипт за изпълнение/обвивка за изпълнимия файл на phpunit.

#!/bin/bash
php -d include_path='.:../phpunit/:../dbunit/:../php-code-coverage/:../php-file-iterator/:../php-invoker/:../php-text-template/:../php-timer:../php-token-stream:../phpunit-mock-objects/:../phpunit-selenium/:../phpunit-story/:/usr/local/lib/php' ../phpunit/phpunit.php $*

Можете да адаптирате пътя към вашите нужди или ако искате да го обвиете в друг скрипт, можете също да използвате phpunit донякъде програмно чрез

require '/path/to/phpunit/PHPUnit/Autoload.php';
PHPUnit_TextUI_Command::main();

Това предполага, че имате ether файл phpunit.xml.dist или че използвате правилните параметри на cli, когато извиквате своя обвиващ скрипт.


Можете също да използвате пакетите pear и да разопаковате всички стабилни версии, вместо да работите от git checkout, за да спестите малко дисково и репо пространство. Скриптът за обвивка и цялата работа по включващия път е една и съща :)


Свързани SO въпроси:

PHP – Има ли преносима версия на PHPUnit?

PHPUNIT без инсталация

person edorian    schedule 01.10.2012

Зависимостите ще зависят от това какви добавки използвате, PHPUnit сам по себе си трябва да бъде самостоятелен. Тъй като няма особено последователно решение за управление на пакети за PHP (и сте елиминирали най-жизнеспособните опции освен преоткриването на колелото), най-добрият ви залог би бил да включите файловете в изходното дърво отделно от кода на приложението. Създаването на сродна директория от каквото и да е вашето APPLICATION_ROOT или подобно би било, което се нарича "test" и има "lib" или подобна директория, пълна с PHPUnit и всички зависимости, от които се нуждаете за това, вероятно ще бъде добър план. Не трябва да има припокриване и еднопосочна зависимост от тестовата директория към основния източник на приложение.

Предполагам, че търсите автоматизирана тестова страница за проверка на здравето, така че бихте могли да създадете единствената страница, която включва това, което е необходимо от тази тестова директория. В идеалния случай, ако имате уеб директорията, която разкрива статичните ви ресурси, можете да имате PHP файла, който отговаря за зареждането на предния контролер за вашето приложение, като включите папката на приложението извън корена на документа и след това втори файл, който зарежда тестов пакет. Това би позволило на вашата директория на приложението да остане фокусирана върху самия код на приложението, тестовата директория да съдържа вашия тестов код и след това 2-та малки включващи файла, които отговарят за зареждането на кодовите бази (с всякакъв вид споделени константни дефиниции и т.н. също се извлича и съхранява СУХО).

person Matt Whipple    schedule 01.10.2012
comment
Тогава трябва да включвам библиотеката по грешен начин, но не видях споменаване как да направя това в официалните документи. А относно страницата за автоматизиран тест на healthceck, тя трябва да е в папката на проекта, така че да може да бъде в производствения сървър, когато разположа. Не знам как да покажа тестовете на екрана, тъй като документацията изглежда говори само за командния ред. - person Hugo Mota; 01.10.2012
comment
Показването на резултатите трябва да е в секцията за генериране на отчети на документите (можете също така просто да публикувате отчетите в корена на документа). Тестовете трябва да са вътре в папката за разгръщане, ако тръгнете по този маршрут, но трябва да е брат или сестра на директорията с код на приложението, а не под нея. Трябва да има средство за изпращане до 2 различни папки, без да се налага да смесвате кода. За изпълнение бих започнал с метода на командния ред (извикан чрез PHP), тъй като това е начинът, по който тестовете ще се изпълняват ръчно или с помощта на инструмент за изграждане, и след това ще разгледам размяната в извикванията на API по-късно. - person Matt Whipple; 01.10.2012
comment
но как правилно да включа библиотеката от моя код? и как да стартирам тестовете от самия php (без командния ред)? - person Hugo Mota; 01.10.2012
comment
Включете използването на изискване или автоматично зареждане според нуждите, както всеки друг файл. PHP е доста безразличен към това откъде идва кодът. Стартирайте с нещо като: phpunit .de/manual/3.0/en/ - person Matt Whipple; 01.10.2012

Има последователно решение за управление на пакети за PHP - http://getComposer.org. Освен това вече има средство за инсталиране на PHPunit в обичайния стил на композиране, http://packagist.org/packages/phpunit/phpunit

С инсталирания софтуер той ще постави скрипта на командния ред на phpunit в локалната директория „bin/“, така че можете да го извикате, въпреки че вероятно ще искате да имате скрипт на обвивка, който също задава конфигурационния файл, който ще използва.

Обичайната настройка е поддиректория tests/ с йерархията на PHPunit-разширяващи класове, които изпълняват действителните тестове.

person Alister Bulman    schedule 01.10.2012
comment
..нито композиторът е преносим. - person Pacerier; 04.08.2015