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

Posted

技术标签:

【中文标题】调用未定义的方法 PHP_CodeCoverage_Filter::getInstance()【英文标题】:Call to undefined method PHP_CodeCoverage_Filter::getInstance() 【发布时间】:2012-02-29 10:56:48 【问题描述】:

我的系统 (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? pear info phpunit/PHPUnit 好像phpunit 可执行脚本没有更新到3.6.x。 Release Date 2012-01-27 10:49:19 Release Version 3.6.10 (stable) 截至 2014 年底,您根本无法通过 pear 安装 phpunit。 github.com/sebastianbergmann/phpunit/wiki/… 【参考方案1】:

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

【讨论】:

它也适用于我的(旧)12.04 安装(10.04 -> 11.04 -> 11.10 -> 12.04) Supergreen,为我节省了很多时间!像魅力一样工作。 如果您正在从另一个安装进行故障排除,您可能会收到 bash: not found 消息。只需打开另一个选项卡或终端即可修复它。 我找到了另一个没有最后一行的解决方案 (sudo pear install --force --alldeps phpunit/PHPUnit)。最后,通过运行最后一行,它立即生效。【参考方案2】:

加载 PHPUnit 的可执行脚本在转至 3.6.x 时必须未更新。重新安装它。

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

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

【讨论】:

你能在这里写下如何使 PEAR 更新吗?该链接现在不存在。【参考方案3】:

对于某些人来说,由于Unknown remote channel: pear.symfony.comphpunit/PHPUnit requires package "channel://pear.symfony.com/Yaml",Anthony 的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

【讨论】:

经过大量尝试让 phpUnit 在我的 Ubuntu 12.04 VM 上运行后,这个解决方案对我有用。谢谢! 修复了 Ubuntu 12.04 - 看不出每个人都在抱怨什么,那是 so 简单! 讽刺>【参考方案4】:

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

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

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

我使用的是 Ubuntu 12.10 安装,现在可以完美运行。

【讨论】:

【参考方案7】:

我也遇到了同样的问题,用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/。

【讨论】:

以上是关于调用未定义的方法 PHP_CodeCoverage_Filter::getInstance()的主要内容,如果未能解决你的问题,请参考以下文章

调用未定义的方法 BelongsTo::attach()

未调用自定义 UIButton 的 setIsSelected 方法

调用未定义的方法 Cake\ORM\Entity::query() CakePhp

致命错误:未捕获的错误:调用未定义的方法 stdClass::option();

调用类方法时出现“调用未定义函数”错误

调用未定义的方法 Illuminate\Foundation\Application::bindShared()