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

50

У меня есть новая версия 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

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

  • 1
    Какие версии PHPUnit установлены? pear info phpunit/PHPUnit Похоже, исполняемый скрипт phpunit не был обновлен до 3.6.x.
  • 0
    Release Date 2012-01-27 10:49:19 Release Version 3.6.10 (stable)
Показать ещё 1 комментарий
Теги:
phpunit
pear

7 ответов

34
Лучший ответ

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

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

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

  • 0
    Деинсталляция и переустановка PHPUnit работали; благодарю вас.
  • 4
    Можете ли вы написать здесь, как сделать PEAR современным? Ссылка не выходит сейчас.
118

У Ubuntu 11.10 была проблема, которая не была исправлена. Это единственное, что поможет phpunit работать с грушей. (Вне использования груши вы можете найти способ сделать это без груши. В Интернете есть статья об этом, но я бы не хотел, чтобы это было связано с этим вручную). Это единственное, что сработало для меня:

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
  • 9
    Это решение работало для моей (новой) установки 12.04.
  • 0
    Это также работало для моего (старого) 12.04 insall (10.04 -> 11.04 -> 11.10 -> 12.04)
Показать ещё 4 комментария
23

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

SO - это усовершенствованное решение, которое решает это:

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
  • 0
    работал отлично! Спасибо друг :)
  • 0
    После множества попыток заставить phpUnit работать на моей Ubuntu 12.04 VM, это решение сработало для меня. Спасибо!
Показать ещё 1 комментарий
1

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

1

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

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

0

Я столкнулся с одной и той же проблемой, сумел ее решить, используя композитор

Попробуйте выполнить следующие действия -

Сначала удалите 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/на вашем пути.

0

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

Вы можете решить эту проблему http://rkrants.blogspot.in/2013/01/installing-phpunitpear-in-ubuntu-1210.html

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню