Я установил phpunit в свой Ubuntu 11.10 с php версии 5.2.14.
Но когда я запускаю свой тестовый модуль, он бросает ошибку,
PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Autoload.php on line 64
Я выполнил шаги, упомянутые в этом стеке, но все равно не повезло.
Вызов неопределенного метода PHP_CodeCoverage_Filter :: getInstance ()
Следующие шаги решили мою проблему.
sudo apt-get remove phpunit sudo pear channel-discover pear.phpunit.de sudo pear channel-discover pear.symfony.com sudo pear channel-discover components.ez.no sudo pear update-channels sudo pear upgrade-all sudo pear install --alldeps phpunit/PHPUnit sudo pear install --force --alldeps phpunit/PHPUnit
Один обходной путь – это решение, а не решение – заключается в том, чтобы обойти установку PEAR и использовать локальную копию через установку Composer .
Создайте файл в корне проекта, названном composer.json
:
{ "require": { "phpunit/phpunit" : "3.7.*" } }
Разумеется, измените версию phpunit на «3.6. *» Или аналогичную, если у вас есть такое требование.
В корне проекта:
# Install composer $ curl -s https://getcomposer.org/installer | php # Tell composer to install the dependencies identified in composer.json $ php composer.phar install # Now you can invoke the *local* copy of phpunit $ ./vendor/phpunit/phpunit/composer/bin/phpunit --version
Для простоты вы можете создать символическую ссылку на исполняемый файл phpunit. Предполагая, что вы хотите использовать символическую ссылку в каталоге, называемом tests
:
$ ln -s ./vendor/phpunit/phpunit/composer/bin/phpunit ./tests/phpunit
Затем вы можете вызывать как (из корня проекта):
$ cd tests $ ./phpunit --version
Еще проще, вы можете направить Composer для обработки символических ссылок для вас. Добавьте это в свой composer.json
:
"config": { "bin-dir": "tests" }
Затем, как и прежде, вы можете ссылаться как (из корня проекта):
$ cd tests $ ./phpunit --version
Фактически, то, что я обычно делаю, это каталог на уровне проекта, называемый scripts
и укажите мой композитор bin-dir
. Затем я вручную создаю символическую ссылку в tests
указывающих на scripts/phpunit
. Но этот последний шаг, вероятно, более личный вкус, чем любое требование.
Может быть, длинный путь, чтобы просто побороть проблемы PEAR, но я считаю, что установка на основе Composer работает довольно надежно для меня.
моя платформа Symfony 1.4 не установила последнюю версию плагина, совместимого с последней версией phpunit. Поэтому для меня работала обновление до последней версии https://github.com/JWT-OSS/sfJwtPhpUnitPlugin/ .