Вызов неопределенного метода PHP CodeCoverage Filter:: getInstance()

у меня есть новая копия 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 ответов


исполняемый скрипт, который загружает PHPUnit, не должен обновляться при переходе на 3.6.х. Переустановить его.

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

Если это не работает, убедитесь, что сама груша обновлена.


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

для некоторых, Энтони решение не будет работать полностью из-за Unknown remote channel: pear.symfony.com или phpunit/PHPUnit requires package "channel://pear.symfony.com/Yaml".

Итак, вот обновленное решение, которое решает это:

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

вместо этого используйте конструктор, если вы столкнулись с этой ошибкой. Однако это неприменимо к открытию поста, поскольку команда поступила от самого PHPUnit.


это работает для меня. в начале я не использовал --force для последней команды, я получил фатальную ошибку, которая "вызывает неопределенный метод PHP_CodeCoverage_Filter:: getInstance". Затем я использовал -- force, который решил эту проблему.


в то время как у меня была та же проблема, и мне удалось ее решить, используя правильные переменные среды.

вы можете добраться до решения здесь http://rkrants.blogspot.in/2013/01/installing-phpunitpear-in-ubuntu-1210.html

короче говоря, мне пришлось переустановить PHPUnit с помощью pear после установки переменных правильно.

Я использовал установку Ubuntu 12.10, и теперь она отлично работает.


я столкнулся с той же проблемой, удалось решить ее с помощью composer

попробуйте эти шаги -

Сначала удалите phpunit

sudo apt-get remove phpunit

установить composer -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.*'

вы также нужно убедиться, что у вас есть~/.композитор / поставщик / bin / на вашем пути.