PHP_CodeCoverage_Filter::getInstance()运行phpunit时出错
我在ubuntu 11.10中安装了phpunit,php版本为5.2.14 但当我运行测试模块时,它抛出了错误PHP_CodeCoverage_Filter::getInstance()运行phpunit时出错,php,zend-framework,phpunit,code-coverage,Php,Zend Framework,Phpunit,Code Coverage,我在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 我遵循了这个问题中提到的步骤,但仍然没有运气 一个解决办法是绕过PEAR安装并通过使用本地副本,这是理所当然的,不是真正
PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Autoload.php on line 64
我遵循了这个问题中提到的步骤,但仍然没有运气
一个解决办法是绕过PEAR安装并通过使用本地副本,这是理所当然的,不是真正的解决方案 在项目根目录中创建一个名为
composer.json的文件:
{
"require": {
"phpunit/phpunit" : "3.7.*"
}
}
"config": {
"bin-dir": "tests"
}
当然,如果您有这样的要求,可以将phpunit版本修改为“3.6.*”或类似版本
在项目根目录下:
#安装composer
$curl-shttps://getcomposer.org/installer |php
#告诉composer安装composer.json中标识的依赖项
$php composer.phar安装
#现在您可以调用phpunit的*local*副本
$./vendor/phpunit/phpunit/composer/bin/phpunit--version
为简单起见,可以创建phpunit可执行文件的符号链接。假设您希望符号链接位于名为tests
的目录中:
$ln-s./vendor/phpunit/phpunit/composer/bin/phpunit./tests/phpunit
然后,您可以作为(从项目根目录)调用:
$cd测试
$./phpunit—版本
更简单的是,您可以指导Composer为您处理符号链接。将此添加到您的composer.json
:
{
"require": {
"phpunit/phpunit" : "3.7.*"
}
}
"config": {
"bin-dir": "tests"
}
然后,与前面一样,您可以调用as(从项目根目录):
$cd测试
$./phpunit—版本
实际上,我通常做的是有一个名为scripts
的项目级目录,并将我的composerbin dir
指向那里。然后我在tests
中手动创建一个符号链接,指向scripts/phpunit
。但这最后一步可能比任何要求都更符合个人品味
也许要克服PEAR问题还有很长的路要走,但我发现基于Composer的安装对我来说非常可靠。以下步骤解决了我的问题
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
我的平台Symfony 1.4没有安装与最新phpunit版本兼容的插件的最新版本。所以更新到最新版本对我来说很有用 请不要在您的问题中添加random
codeformatting
。这使它很难阅读。@Charles-我已经检查了你的编辑,下次再处理。谢谢谢谢你的回答。我现在从上面的堆栈溢出问题参考安装了phpunit。但是现在我得到了解析错误:语法错误,意外的T_函数,运行phpunit命令时,第45行的/usr/share/php/File/Iterator/Autoload.php中应为“')。下载的组件(如phpunit)中出现的语法错误听起来像是下载不完整。我会删除并重新安装。啊,我注意到您使用的是PHP5.2.14。phpunit3.7要求PHP>=5.3.3,而phpunit3.6只要求PHP>=5.2.7。除非您需要使用PHP 5.2,否则我建议将其升级到5.3。是的,我在谷歌搜索并了解它(phpunit)只需要PHP>=5.2.7,但我无法升级。仍在搜索其他解决方案:(…感谢您的大力帮助您仍然可以使用基于composer的安装。只需在composer.json
中为phpunit版本指定3.6.*
。