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

时间:2012-02-08 00:04:14

标签: ubuntu phpunit pear

我的系统上安装了一个新的PHPUnit副本(Ubuntu 11),但每当我在控制台中输入phpunit时,我都会收到以下错误:

PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/bin/phpunit on line 39

据我所知,我安装了PHPUnit的代码覆盖率:

>sudo pear install phpunit/PHP_CodeCoverage

phpunit/PHP_CodeCoverage is already installed and is the same as the released version 1.1.1

install failed

为什么我会收到此错误以及如何解决?

7 个答案:

答案 0 :(得分:118)

Ubuntu 11.10已经有一段时间没有修复问题了。这是唯一能让phpunit与pear一起工作的东西。 (除了使用梨之外,你可以在没有梨的情况下查找一种方法。有一篇关于此的文章,但我不希望手动这样做的负担)。这是唯一对我有用的东西:

sudo apt-get remove phpunit

sudo pear channel-discover pear.phpunit.de

sudo pear channel-discover pear.symfony-project.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 :(得分:34)

在转到3.6.x时,加载PHPUnit的可执行脚本不得更新。重新安装。

sudo pear uninstall phpunit/PHPUnit
sudo pear install phpunit/PHPUnit

如果这不起作用,make sure PEAR itself is up-to-date

答案 2 :(得分:23)

对于某些人来说,由于Unknown remote channel: pear.symfony.comphpunit/PHPUnit requires package "channel://pear.symfony.com/Yaml",安东尼的solution无法完全运作。

这是解决此问题的升级解决方案:

sudo apt-get remove phpunit

sudo pear channel-discover pear.phpunit.de

sudo pear channel-discover pear.symfony-project.com

sudo pear channel-discover components.ez.no

sudo pear channel-discover pear.symfony.com

sudo pear update-channels

sudo pear upgrade-all

sudo pear install pear.symfony.com/Yaml

sudo pear install --alldeps phpunit/PHPUnit

sudo pear install --force --alldeps phpunit/PHPUnit

答案 3 :(得分:1)

方法getInstance()似乎已从课程中删除。 https://github.com/sebastianbergmann/php-code-coverage/blob/master/PHP/CodeCoverage/Filter.php#L78

如果遇到此错误,请使用构造函数。但是,这不适用于开放帖子,因为命令来自PHPUnit本身。

答案 4 :(得分:1)

它对我有用。在开始时,我没有使用--force作为最后一个命令,我得到一个致命的错误,“调用未定义的方法PHP_CodeCoverage_Filter :: getInstance”。然后我使用了--force,它解决了这个问题。

答案 5 :(得分:0)

虽然我遇到了同样的问题,并设法通过设置正确的环境变量来解决它。

你可以在这里解决问题 http://rkrants.blogspot.in/2013/01/installing-phpunitpear-in-ubuntu-1210.html

简而言之,我必须在设置正确的变量后使用pear重新安装PHPUnit。

我使用的是Ubuntu 12.10安装,它现在运行良好。

答案 6 :(得分:0)

我遇到了同样的问题,设法使用composer解决它

尝试以下步骤 -

首先卸载phpunit

sudo apt-get remove phpunit

安装作曲家 - http://getcomposer.org/doc/01-basic-usage.md#installation

$ curl -sS https://getcomposer.org/installer | php

安装phpunit - http://phpunit.de/manual/3.7/en/installation.html

对于通过Composer进行的系统范围安装,您可以运行:

$ composer global require 'phpunit/phpunit=3.7.*'

您还必须确保路径中有〜/ .composer / vendor / bin /。