48 votes

Appel à une méthode non définie PHP_CodeCoverage_Filter::getInstance()

J'ai une nouvelle copie de PHPUnit installée sur mon système (Ubuntu 11), mais dès que je tape phpunit dans la console, j'obtiens l'erreur suivante :

PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/bin/phpunit on line 39

J'ai installé la couverture de code de PHPUnit, pour autant que je sache :

>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

Pourquoi est-ce que je reçois cette erreur et comment puis-je la corriger ?

118voto

Anthony Points 1189

Ubuntu 11.10 a un problème depuis un certain temps qui n'a pas été corrigé. C'est la seule chose qui permettra à phpunit de fonctionner avec pear. (En dehors de l'utilisation de pear, vous pouvez chercher un moyen de le faire sans pear. Il y a un article en ligne à ce sujet, mais je ne voudrais pas que ce soit un tel fardeau de le faire manuellement). C'est la seule chose qui a fonctionné pour moi :

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

34voto

David Harkness Points 16674

L'exécutable script qui charge PHPUnit n'a pas dû être mis à jour lors du passage à la version 3.6.x. Réinstallez-le.

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

Si ça ne marche pas, s'assurer que PEAR lui-même est à jour .

23voto

Starx Points 38727

Pour certains, Anthony est solution ne fonctionnera pas complètement à cause de la Unknown remote channel: pear.symfony.com o phpunit/PHPUnit requires package "channel://pear.symfony.com/Yaml" .

Voici donc la solution améliorée qui résout ce problème :

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

1voto

Tails Points 80

La méthode getInstance() semble avoir été écarté de la classe. https://github.com/sebastianbergmann/php-code-coverage/blob/master/PHP/CodeCoverage/Filter.php#L78

Utilisez le constructeur à la place si vous rencontrez cette erreur. Cependant, ceci n'est pas applicable au post d'ouverture car la commande provient de PHPUnit lui-même.

1voto

casilin Points 11

Cela fonctionne pour moi. au début, je n'ai pas utilisé --force pour la dernière commande, j'ai eu une erreur fatale "Call to undefined method PHP_CodeCoverage_Filter::getInstance". Puis j'ai utilisé --force, ce qui a résolu ce problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X