Вызов неопределенного метода 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

Почему я получаю эту ошибку и как я могу ее исправить?

Author: Ian Hunter, 2012-02-08

7 answers

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

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

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

 34
Author: David Harkness, 2017-05-23 12:29:49

В 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
 118
Author: Anthony, 2012-02-27 19:11:33

Для некоторых решение Энтони не будет работать полностью из-за 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
 23
Author: Starx, 2017-05-23 11:58:16

Метод getInstance(), похоже, был удален из класса. https://github.com/sebastianbergmann/php-code-coverage/blob/master/PHP/CodeCoverage/Filter.php#L78

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

 1
Author: Tails, 2012-07-01 15:56:37

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

 1
Author: casilin, 2013-08-08 06:53:02

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

Вы можете перейти к решению здесь http://rkrants.blogspot.in/2013/01/installing-phpunitpear-in-ubuntu-1210.html

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

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

 0
Author: Rabimba Karanjai, 2013-01-04 18:15:42

Я столкнулся с той же проблемой, мне удалось решить ее с помощью 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.*'

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

 0
Author: Interpol3r, 2014-06-05 08:45:49