2009-09-12 11 views
6

J'ai une classe de test PHPUnit que je voudrais être ignoré à partir d'un test. Je sais que je peux le faire en le renommant de sorte qu'il ne contienne pas le mot Test dans son nom de fichier, mais je préfère ne pas le faire car cela perturbe les eaux de contrôle des sources plus que je ne le voudrais.Faire PHPUnit ignorer les choses?

Est-ce que quelqu'un a une suggestion?

Répondre

15

Il y a deux options pour la commande phpunit qui peut aider à définir les tests à et ne doit pas être exécuté:

$ phpunit --help 
PHPUnit 3.4.0beta5 by Sebastian Bergmann. 

Usage: phpunit [switches] UnitTest [UnitTest.php] 
     phpunit [switches] <directory> 
... 
    --filter <pattern>  Filter which tests to run. 
    --group ...    Only runs tests from the specified group(s). 
    --exclude-group ...  Exclude tests from the specified group(s). 
    --list-groups   List available test groups. 
... 

Ceux-ci permettront probablement pas de préciser exactement ce que vous vouliez ... Mais ils pourraient aider.

Pour plus de détails, voir The Command-Line Test Runner


Surtout, je aime bien la caractéristique du groupe: il suffit d'utiliser une balise @group dans le phpdoc de vos tests, de regrouper les (par exemple, un groupe par "morceau de fonctionnalité"); et, après, vous pouvez utiliser les options --group ou --exclude-group sur la ligne de commande pour spécifier quels tests doivent ou ne doivent pas être exécutés.

Dans votre cas, si vous ne pouvez pas modifier les essais, peut-être l'option --filter peut aider, selon la façon dont vos tests sont nammed (par exemple, s'il y a un moyen d'identifier ceux que vous voulez exécuter):

--filter
fonctionne uniquement des tests dont le nom correspond au motif donné. Le modèle peut être soit le nom d'un seul test, soit une expression régulière correspondant à plusieurs noms de test.


Une autre solution, si vous ne changez pas toujours les « groupes » de tests à exécuter, peut-être d'utiliser un test de suite qui ne comprend que les tests que vous souhaitez exécuter. Par exemple, regardez Composing a Test Suite Using XML Configuration.

+0

L'annotation de groupe fera l'affaire. Merci. –

+0

De rien :-) Amusez-vous! –

+0

J'ai défini '@group slow' sur tous mes tests lents et j'ai utilisé un fichier' phpunit.xml' pour les exclure par défaut. Si je veux les inclure à nouveau, je lance simplement 'phpunit --no-configuration --group slow'. – dave1010

1

J'ai parcouru tout le manuel de PHPUnit et je n'ai rien trouvé. Vous pouvez ignorer le code pour les besoins de la couverture de test, mais c'est à peu près tout. Cependant, ce ChangeLog (dans une fourche apparente) mentionne qu'il va "Ignorer les noms de fichiers de test qui sont préfixés avec ." Je n'ai pas essayé cela, mais ça vaut le coup. Ou vous pourriez commenter le test. Je suppose que vous aimeriez quelque chose comme des offres NUnit où il rapportera les tests ignorés; Je n'ai rien trouvé de tel.

+0

Merci pour la recherche, je l'avais déjà fait mais renommer le fichier n'est pas quelque chose que je suis enclin à faire. –

+0

* avec le préfixe. * Quel est le préfixe? Un point? –

+0

Oui, '.'. Réviser le lien brisé aussi. – TrueWill

4

Je me rends compte que c'est une vieille question avec une réponse acceptée, donc j'espère que je ne suis pas intrus, mais je voulais juste souligner par souci d'achèvement qu'il est possible de skip tests. Les tests incomplets et sautés ne sont pas exécutés par PHPUnit.

Bien sûr, c'est au niveau du test. Cependant, vous pouvez le consolider en le plaçant dans la classe setUp().

Juste un heads-up.

+0

Bonne idée. Je vais le garder à l'esprit. –

+0

Notez que les appareils sont toujours insérés pour les tests ignorés qui peuvent être l'une des parties les plus lentes des tests en cours. –

6

renommer simplement votre méthode:

testFunctionality() {// bla }

à

IGNORE_ testFunctionality() {// bla }

1

Je préfère utiliser des noms normaux pour mes fonctions et mettre dans la fonction docBloc

/** 
* @test 
*/ 
public function getDetails() 
{} 

Alors, quand je ne veux pas que ce test à exécuter, je retire tout ce @test. En outre, peut-être que vous trouverez quelque chose d'utile ici PHPUnit - The XML Configuration File J'ai ajouté dans les tests d'étiquette "exclure" que je ne voulais pas être couvert par phpunit.

Questions connexes