2012-01-24 57 views
6

我收到以下错误,当我尝试我的项目的测试文件夹中运行从phpunit .错误运行时,PHPUnit的

PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Framework.php on line 46 

我通过这些命令安装的PHPUnit:

sudo pear channel-discover pear.symfony-project.com 
sudo pear channel-discover components.ez.no 
sudo pear install --alldeps phpunit/PHPUnit 

由于没有任何的其他方法似乎工作,包括apt-get

认为代码覆盖率的时间在某些时候改变了他们的单件模式,从而去除getInstance但我不知道如何解决这个错误。我如何降级CodeCoverage或升级PHPUnit?

我试图通过手动以下命令安装所有的最新版本:

sudo apt-get install git 
mkdir phpunit && cd phpunit 
git clone git://github.com/sebastianbergmann/phpunit.git 
git clone git://github.com/sebastianbergmann/dbunit.git 
git clone git://github.com/sebastianbergmann/php-file-iterator.git 
git clone git://github.com/sebastianbergmann/php-text-template.git 
git clone git://github.com/sebastianbergmann/php-code-coverage.git 
git clone git://github.com/sebastianbergmann/php-token-stream.git 
git clone git://github.com/sebastianbergmann/php-timer.git 
git clone git://github.com/sebastianbergmann/phpunit-mock-objects.git 
git clone git://github.com/sebastianbergmann/phpunit-selenium.git 
git clone git://github.com/sebastianbergmann/phpunit-story.git 
git clone git://github.com/sebastianbergmann/php-invoker.git 
sudo cp -r dbunit/PHPUnit /usr/share/php/ 
sudo cp -r php-code-coverage/PHP /usr/share/php/ 
sudo cp -r php-file-iterator/File /usr/share/php/ 
sudo cp -r php-invoker/PHP /usr/share/php/ 
sudo cp -r php-text-template/Text /usr/share/php/ 
sudo cp -r php-timer/PHP /usr/share/php/ 
sudo cp -r php-token-stream/PHP /usr/share/php/ 
sudo cp -r phpunit/PHPUnit /usr/share/php/ 
sudo cp -r phpunit-mock-objects/PHPUnit /usr/share/php/ 
sudo cp -r phpunit-selenium/PHPUnit /usr/share/php/ 
sudo cp -r phpunit-story/PHPUnit /usr/share/php/ 
sudo cp -r phpunit/phpunit.php /usr/share/php/ 

但是这并没有任何帮助。现在我只是有一堆垃圾到处都是:\


版本信息:

PEAR Version: 1.9.4 
PHP Version: 5.3.6-13ubuntu3.3 
Zend Engine Version: 2.3.0 
PHPUnit 3.6.9 by Sebastian Bergmann. 

Installed packages, channel pear.phpunit.de: 
============================================ 
Package   Version State 
File_Iterator  1.3.1 stable 
PHPUnit   3.6.9 stable 
PHPUnit_MockObject 1.1.1 stable 
PHP_CodeCoverage 1.1.1 stable 
PHP_Invoker  1.1.0 stable 
PHP_Timer   1.0.2 stable 
PHP_TokenStream 1.1.2 stable 
Text_Template  1.1.1 stable 
+0

我一直无法在Ubuntu 11.10上让phpUnit为我工作。 –

+2

我有同样的问题,我已经问过** 50点赏金**:http://stackoverflow.com/questions/8949963/phpunit-pear-upgrading-errors – Eray

+0

去记录作为PEAR的对手,和PHPUnit是以当前状态发布的。 –

回答

5

我没有使用实际pear.phpunit.de通道时有问题安装PHPUnit,特别是在尝试使用像apt-get或yum这样的包管理器时。尝试删除从git存储库中提取的所有手动安装的东西,并执行PHPUnit的pear uninstall及其可选依赖项。然后:

  • 须藤梨梨升级
  • 须藤梨配置设置auto_discover 1
  • 须藤梨安装--alldeps pear.phpunit.de/PHPUnit

这为我工作。 .. 希望能帮助到你。


UPDATE

它可能不用说,但你也应该清除以前的apt-get的尝试,以及之前完成上述步骤:

  • sudo易于得到净化php5-pear
+0

http://stackoverflow.com/questions/8949963/phpunit-pear-upgrading-errors(** with 50点赏金**) – Eray

+0

那么代码我一个不同的错误:'PHP致命错误:require_once():失败开放所需'PHPUnit/Framework/MockObject/Autoload.php' – mpen

+0

“MockObject”目录不存在。滑稽。你会认为“alldeps”会安装所有的代码。显然不是。我如何获得MockObjects? – mpen

2

手动安装Ubuntu 11.10

mkdir phpunit && cd phpunit 
git clone git://github.com/sebastianbergmann/phpunit.git 
git clone git://github.com/sebastianbergmann/dbunit.git 
git clone git://github.com/sebastianbergmann/php-file-iterator.git 
git clone git://github.com/sebastianbergmann/php-text-template.git 
git clone git://github.com/sebastianbergmann/php-code-coverage.git 
git clone git://github.com/sebastianbergmann/php-token-stream.git 
git clone git://github.com/sebastianbergmann/php-timer.git 
git clone git://github.com/sebastianbergmann/phpunit-mock-objects.git 
git clone git://github.com/sebastianbergmann/phpunit-selenium.git 
git clone git://github.com/sebastianbergmann/phpunit-story.git 
git clone git://github.com/sebastianbergmann/php-invoker.git 
cd phpunit && git checkout 3.6 && cd .. 
cd dbunit && git checkout 1.1 && cd .. 
cd php-code-coverage && git checkout 1.1 && cd .. 
cd phpunit-mock-objects && git checkout 1.1 && cd .. 
cd phpunit-selenium && git checkout 1.1 && cd .. 
sudo mv ./* /usr/share/php/ 
ln -s /usr/share/php/phpunit/phpunit.php ~/bin/phpunit 
gksudo gedit /etc/php5/cli/php.ini 

以下内容添加到您的include_path

/usr/share/php/dbunit:/usr/share/php/php-code-coverage:/usr/share/php/php-file-iterator:/usr/share/php/php-text-template:/usr/share/php/php-timer:/usr/share/php/php-token-stream:/usr/share/php/phpunit:/usr/share/php/phpunit-mock-objects:/usr/share/php/phpunit-selenium:/usr/share/php/phpunit-story:/usr/share/php/php-invoker 
7

你可以试试这个,我已经做到了我的Ubuntu的12。04

  1. 须藤梨卸载的PHPUnit/PHPUnit的
  2. 须藤梨卸载pear.phpunit.de/PHPUnit_MockObject
  3. 须藤梨安装pear.phpunit.de/PHPUnit_MockObject
  4. 须藤梨安装--alldeps梨。 phpunit.de/PHPUnit

我试过很多其他的方法。这在我受到错误打击时起作用。

[email protected]:~$ phpunit PHP Warning: require_once(PHPUnit/Framework/MockObject/Autoload.php): failed to open >?>stream: No such file or directory in /usr/share/php/PHPUnit/Autoload.php on line 48 PHP Fatal error: require_once(): Failed opening required >'PHPUnit/Framework/MockObject/Autoload.php' >(include_path='.:/usr/share/php:/usr/share/pear') in /usr/share/php/PHPUnit/Autoload.php on >line 48 [email protected]:~$ cd /usr/share/php/

1

打开/usr/share/php/PHPUnit/Framework.php,你会看到:

trigger_error(
    'Please no longer include "PHPUnit/Framework.php".', E_USER_NOTICE 
); 

这一切! 请不要再包含“PHPUnit/Framework.php”!

1

系统,清晰梨的缓存

pear clear-cache 

上安装的PHPUnit从我所见过的,也许你没有PHPUnit的整合与您的项目。您不需要仅使用PEAR安装PHPUnit,我相信您需要的文件不在项目中。