Днес(т.е. на 27, просто от тогава този пост седи във draft-a) прочетох това:
Във него се показва интересен метод за работа със PHPUnit и тестване на база данни. Този пост, ме “вдъхнови” и мен да споделя, как аз работя със PHPUnit.
Първо директорийната структура. В една папка тест имам следните неща:
- benchmarks/ - съдържа различни benchmark тестове ( за тях някои друг път по-подробно)
- fixtures/ - fixtures на тестовете
- reports/ - code coverage докладите на xdebug
- unit/ - самите unit тестове
- enviroment.php - различни настройки
Под папките на unit, отговарят на разлините testcase -ове. Например testcase за ActiveRecord::Relations::Many се намира в unit/ActiveRecord/Relations/ActiveRecordRelationManyTest.php. Това което е по-интересно в случая е, че в повечето папките имам един файл: setup.php този файл се изпълнява преди тестовете от съответния testcase да се активират. Идеята му е се заредят класовете, файловете, да се изчисти базата данни преди тестване.
За тестове съм си направил едни клас Test_TestCase който наследява PHPUnit_Framework_TestCase и в него съм си добавил няколко помощни метода за тестване.
И накрая имам един клас Test_Runner който стартира тестовете. Кода на Test_Runner може да намерите тук.
Кода се използва така:
// константите DS и TESTS_DIR се използват при инициализация на Test_Runner
define('DS', DIRECTORY_SEPARATOR);
define('TESTS_DIR', ROOT_DIR . DS . 'test' . DS . 'unit');
$r = new Test_Runner();
$r->run($options);
Също така използвам и 2-3 php скриптчета за генериране на скелета за тест класа, директориите, setup.php файловете и други.
По принцип, не харесвам много PHPUnit, но за нещастие няма за сега по-добро нещо за тестове в PHP света, до колкото знам. A и ако добре се документира и структурира тест кода, нещата стават доста по-поносими.
Ако някои има идеи и съвети за PHPUnit или тестването като цяло, да се чувства поканен да остави коментар


September 2nd, 2008 at 8:37 am
Е, дали няма по-добро е спорно … аз продължавам упорито да ползвам SimpleTest, въпреки че последните години май няма никакво развитие там, докато PHPUnit дърпа напред всеки месец. После примерно хората които започват със Zend Framework, първо се “сблъскват” с PHPUnit
Не че разликите са големи де
September 2nd, 2008 at 1:47 pm
То преди да избера PHPUnit прегледах SimpleTest и нещо което се опитваше да копира RSpec за PHP, но PHPUnit си личи че е по-често обновяван продукт. А и когато пускам тестовете си, скоростта не е от такова значение, каквато е при самите приложения.