Итак,
Для начала необходимо установить pear (если не установлен):
~$ sudo apt-get install php-pearдолжна установиться последняя версия, на момент написания этой статьи - это 1.9.1, смотрим
~$ pear -VДалее делаем по инструкции в офф. документации Chapter 3. Installing PHPUnit
PEAR Version: 1.9.4
PHP Version: 5.3.10-1ubuntu3.6
Zend Engine Version: 2.3.0
~$ sudo pear config-set auto_discover 1Помимо самого phpUnit установятся PHPUnit_MockObject, PHP_CodeCoverage и еще куча всяких штук. Проверяем
~$ sudo pear install pear.phpunit.de/PHPUnit
~$ phpunit --versionСупер! phpUnit установлен и работает. проверим,
PHPUnit 3.7.19 by Sebastian Bergmann.
В своем проекте создадим папку /tests и /tests/reports, в этой папке создадим файл phpunit.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<phpunit
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
stopOnFailure="true"
syntaxCheck="true">
<testsuite name="my Test Suite">
<directory>./</directory>
</testsuite>
<logging>
<log type="coverage-html" target="./reports/coverage" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70"/>
<log type="coverage-xml" target="./reports/coverage/clover.xml"/>
<log type="junit" target="./reports/phpunit.xml" logIncompleteSkipped="false"/>
</logging>
</phpunit>
опции говорят сами за себя, а подробнее об опциях можно почитать здесь: Appendix C. The XML Configuration File Теперь в NetBeans кликнув на файле описании какого-то класса правой кнопкой Tools/Create PHPUnit tests
создастся файл теста с методами пустышками. В любом методе напишем
$this->assertTrue(TRUE, 'This should already work.');
вместо
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
Можно его сразу запустить и проверить работоспособность, увидимТеперь для полного счастья чтобы не запускать каждый тест по отдельности, создадим в папке /tests файлы AllTests.php
require_once 'ProjTestSuite.php';
class AllTests {
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('proj project');
$suite->addTest(ProjTestSuite::suite());
return $suite;
}
}
и ProjTestSuite.php
require_once 'path/to/my/SomeTestCase.php';
class ProjTestSuite {
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('proj test suite');
$suite->addTestSuite('SomeTestCase');
// сюда будем добавлять тест кейсы
return $suite;
}
}
Вот и все, теперь для запуска тестов необходимо запускать AllTests.php. Так же в /tests/reports/coverage/index.html можно увидеть покрытия кода тестами и рискованные (CRAP) методы.Пока добавление тест кейсов выглядит не очень удобным, ведь надо создать строку в класе набора (Suite) и добавить require_once, предложите более удобный вариант :)
Удачного вам тестирования и чистого кода.
Ссылки по теме:
TDD - Разработка через тестирование
Юнит-тестирование в PHP
PHPUnit. Автоматические тесты
PHPUnit и покрытие кода (Source code coverage)
PHPUnit Manual


Комментариев нет:
Отправить комментарий