我已经在我的 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
我按照这个堆栈问题中提到的步骤进行操作,但仍然没有运气。
我已经在我的 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
我按照这个堆栈问题中提到的步骤进行操作,但仍然没有运气。
以下步骤解决了我的问题。
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 install 并通过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
然后你可以调用(从项目根目录):
$ cd tests
$ ./phpunit --version
更简单的是,您可以指示 Composer 为您处理符号链接。将此添加到您的composer.json
:
"config": {
"bin-dir": "tests"
}
然后,像以前一样,您可以调用 as(从项目根目录):
$ cd tests
$ ./phpunit --version
实际上,我通常做的是有一个名为的项目级目录scripts
并将我的作曲家指向bin-dir
那里。然后我手动创建一个tests
指向scripts/phpunit
. 但这最后一步可能比任何要求都更符合个人品味。
仅仅解决 PEAR 问题可能还有很长的路要走,但我发现基于 Composer 的安装对我来说非常可靠。
我的平台 Symfony 1.4 没有安装与最新 phpunit 版本兼容的最新版本插件。所以更新到最新版本的https://github.com/JWT-OSS/sfJwtPhpUnitPlugin/对我有用。