2012-02-08 3 views
48

Я получил новую копию PHPUnit, установленный на моей системе (Ubuntu 11), но всякий раз, когда я печатаю phpunit в консоли я получаю следующее сообщение об ошибке:Призыва к неопределенному методу PHP_CodeCoverage_Filter :: деЫпзЬапс()

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

'Дата выпуска 2012-01-27 10:49:19 Версия выпуска 3.6.10 (стабильная)' –

+1

По состоянию на конец 2014 года вы больше не можете устанавливать phpunit через грушу. https://github.com/sebastianbergmann/phpunit/wiki/End-of-Life-for-PEAR-Installation-Method – siliconrockstar

ответ

34

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

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

Если это не сработает, make sure PEAR itself is up-to-date.

+0

Удаление и повторная установка PHPUnit; Спасибо. –

+4

Можете ли вы написать здесь, как сделать PEAR актуальным? Ссылка не выйдет сейчас. – sensorario

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) – Jens

+1

Supergreen, спас меня много времени! Работает как шарм. –

1

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

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

23

Для некоторых из solution 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

работал отлично! спасибо mate :) – Zabs

+0

После того, как много ловить рыбу, чтобы получить phpUnit, работающий над моей Ubuntu 12.04 VM, это решение сработало для меня. Благодаря! –

+0

Исправлено Ubuntu 12.04 - не вижу, о чем все жаловались, это было так просто! – jmc

0

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

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

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

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

1

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

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/поставщик/бен/на вашем пути.

Смежные вопросы