我已经在我的ubuntu 11.10中安装了phpunit,其中包含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
我按照这个堆栈问题中提到的步骤但仍然没有运气。
Call to undefined method PHP_CodeCoverage_Filter::getInstance()
答案 0 :(得分:6)
以下步骤解决了我的问题。
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
答案 1 :(得分:1)
一种解决方法 - 授予,而不是真正的解决方案 - 是绕过PEAR安装并通过Composer install使用本地副本。
在项目根目录中创建一个名为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
然后你可以调用as(从项目根目录):
$ cd tests
$ ./phpunit --version
更简单,您可以指导Composer为您处理符号链接。将其添加到您的composer.json
:
"config": {
"bin-dir": "tests"
}
然后,和以前一样,你可以调用as(从项目根目录):
$ cd tests
$ ./phpunit --version
实际上,我通常做的是有一个名为scripts
的项目级目录,并指向我的作曲家bin-dir
。然后我在tests
中手动创建指向scripts/phpunit
的符号链接。但最后一步可能比任何一种要求更具个人品味。
为了解决PEAR问题,可能还有很长的路要走,但我发现基于Composer的安装对我来说非常可靠。
答案 2 :(得分:0)
我的平台Symfony 1.4没有安装与最新phpunit版本兼容的最新版插件。所以更新到最新版本的https://github.com/JWT-OSS/sfJwtPhpUnitPlugin/对我有用。