PHP_CodeCoverage_Filter :: getInstance () Ошибка при запуске phpunit

Я установил 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/ .