2010-01-01 5 views
5

Cela peut être une question stupide, mais je n'arrive pas à le faire fonctionner. J'utilise PHPUnit pour tester. Actuellement, j'ai deux classes dans un fichier appelé Tests.php:Test de plusieurs classes avec PHPUnit

class XTest extends PHPUnit_Framework_TestCase {...} 
class YTest extends PHPUnit_Framework_TestCase {...} 

Cependant, je ne peux pas exécuter les deux classes. J'exécute la commande suivante sur Windows:

php "C:\Program Files (x86)\PHP\phpunit" Tests 

Et il essaie d'exécuter une classe de test appelée "Tests". Au lieu de cela, je voudrais qu'il fonctionne "XTest" et "YTest" et tout ce qui est sur le fichier. Comment pourrais-je exécuter plusieurs classes de test facilement?

Répondre

3

The PHPUnit Docs Expliquez les arguments attendus par le coureur de test de ligne de commande. Dans votre cas, vous fournissez Tests, ce qui signifie que PHPUnit recherche une classe Tests dans un fichier Tests.php. Avec cette connaissance, il est facile de voir que la meilleure façon d'organiser vos tests sera d'écrire une classe de test par fichier, avec les noms de fichiers égaux à TestClassName.php.

Cependant, si pour une raison quelconque, vous ne voulez pas le faire, vous pouvez fournir un argument supplémentaire pour dire le coureur de test qui dépose la classe de test est déclarée dans:

php "C:\Program Files (x86)\PHP\phpunit" XTest Tests.php 
php "C:\Program Files (x86)\PHP\phpunit" YTest Tests.php 
+1

Mais existe-t-il un moyen facile d'exécuter plusieurs tests? Je ne veux pas exécuter 200 commandes différentes pour tester 200 classes ... – Tower

+5

Bien sûr, si vous donnez au répertoire de test un répertoire en tant qu'argument, il parcourra le répertoire de manière récursive en exécutant tous les tests qu'il trouvera. –

+0

Une autre option pour tester les deux classes dans un fichier: 1) renommer Tests.php en Test.php 2) le placer dans un répertoire séparé, disons 'tests' 3) run: tests phpunit – Andy

5

mettre tous vos tester sous le même répertoire et demander à PHPUnit de les parcourir de manière récursive fonctionnerait, mais si vous avez vos tests sous des répertoires différents ou si vous voulez seulement exécuter des portions spécifiques de classes de test spécifiques, alors le @group annotation pourrait être ce que vous cherchez.

Lorsque vous exécutez vos tests, vous pouvez utiliser le php "C:\Program Files (x86)\PHP\phpunit" --group <insert_name_of_group_to_which_xtests_and_ytests_belong> et PHPUnit exécutera uniquement les tests qui ont @group insert_name_of_group_to_which_xtests_and_ytests_belong dans leur PHPDoc.

Questions connexes