4

我已经在我的 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

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

调用未定义的方法 PHP_CodeCoverage_Filter::getInstance()

4

3 回答 3

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
于 2012-12-26T05:44:38.813 回答
1

一种解决方法 - 授予,不是真正的解决方案 - 是绕过 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 的安装对我来说非常可靠。

于 2012-12-25T08:30:17.277 回答
0

我的平台 Symfony 1.4 没有安装与最新 phpunit 版本兼容的最新版本插件。所以更新到最新版本的https://github.com/JWT-OSS/sfJwtPhpUnitPlugin/对我有用。

于 2013-06-20T06:33:22.777 回答