PHP_CodeCoverage_Filter :: getInstance()运行phpunit时出错

时间:2012-12-25 06:16:24

标签: 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

我按照这个堆栈问题中提到的步骤但仍然没有运气。

Call to undefined method PHP_CodeCoverage_Filter::getInstance()

3 个答案:

答案 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/对我有用。