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

我已经在我的系统(Ubuntu 11)上安装了PHPUnit的全新副本,但每当我在控制台中键入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

为什么我得到这个错误,我该如何解决?

加载PHPUnit的可执行脚本在进入3.6.x时不能更新。 重新安装它。

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

如果这不起作用,请确保PEAR本身是最新的 。

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 

对于某些人来说,Anthony的解决scheme将无法完全工作,因为Unknown remote channel: pear.symfony.comphpunit/PHPUnit requires package "channel://pear.symfony.com/Yaml"

所以这里是解决这个问题的升级解决scheme:

 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 

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

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

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

虽然我有同样的问题,并设法解决它使用设置正确的环境variables。

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

总之,我必须重新安装PHPUnit使用梨后设置variables正确。

我使用了Ubuntu 12.10安装,现在完美运行。

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

试试这些步骤 –

先卸载phpunit

 sudo apt-get remove phpunit 

安装composer php – 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.*' 

您还必须确保在path中有〜/ .composer / vendor / bin /。