J'ai une nouvelle copie de PHPUnit installée sur mon système (Ubuntu 11), mais chaque fois 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 la couverture de code de PHPUnit installée, 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 ai-je cette erreur et comment puis-je la corriger?
Le script exécutable qui charge PHPUnit ne doit pas avoir été mis à jour lors du passage à 3.6.x. Réinstallez-le.
Sudo pear uninstall phpunit/PHPUnit
Sudo pear install phpunit/PHPUnit
Si cela ne fonctionne pas, assurez-vous que PEAR lui-même est à jour .
Ubuntu 11.10 a eu un problème pendant un certain temps qui n'a pas été résolu. C'est la seule chose qui permettra à phpunit de fonctionner avec la poire. (En dehors de l'utilisation de la poire, vous pouvez rechercher un moyen de le faire sans poire. Il y a un article en ligne à ce sujet, mais je ne voudrais pas que ce genre de fardeau le fasse 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
Pour certains, Anthony solution ne fonctionnera pas pleinement à cause du Unknown remote channel: pear.symfony.com
ou phpunit/PHPUnit requires package "channel://pear.symfony.com/Yaml"
.
Voici donc la solution mise à niveau 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
La méthode getInstance()
semble avoir été supprimée de la classe. https://github.com/sebastianbergmann/php-code-coverage/blob/master/PHP/CodeCoverage/Filter.php#L78
Utilisez plutôt le constructeur si vous rencontrez cette erreur. Cependant, cela ne s'applique pas au message d'ouverture car la commande provient de PHPUnit lui-même.
ça marche pour moi. au début, je n'ai pas utilisé --force pour la dernière commande, j'ai eu une erreur fatale "Appel à la méthode non définie PHP_CodeCoverage_Filter :: getInstance". Ensuite, j'ai utilisé --force, qui a résolu ce problème.
Je suis tombé sur le même problème, j'ai réussi à le résoudre en utilisant le compositeur
Essayez ces étapes -
Désinstaller d'abord phpunit
Sudo apt-get remove phpunit
Installer composer - http://getcomposer.org/doc/01-basic-usage.md#installation
$ curl -sS https://getcomposer.org/installer | php
Installez phpunit - http://phpunit.de/manual/3.7/en/installation.html
Pour une installation à l'échelle du système via Composer, vous pouvez exécuter:
$ composer global require 'phpunit/phpunit=3.7.*'
Vous devrez également vous assurer que vous avez ~/.composer/vendor/bin/sur votre chemin.
Alors que j'avais le même problème et réussi à le résoudre en définissant des variables d'environnement correctes.
Vous pouvez trouver la solution ici http://rkrants.blogspot.in/2013/01/installing-phpunitpear-in-ubuntu-1210.html
En bref, j'ai dû réinstaller PHPUnit en utilisant pear après avoir défini les variables correctement.
J'ai utilisé une installation Ubuntu 12.10 et cela fonctionne parfaitement maintenant.