web-dev-qa-db-fra.com

Appel à la 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 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?

48
Ian Hunter

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 .

34
David Harkness

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
118
Anthony

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
23
Starx

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.

1
Tails

ç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.

1
casilin

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.

0
Interpol3r

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.

0
Rabimba Karanjai