Comment exécuter une suite de tests phpunit xml spécifique?

Comment choisir une suite de tests spécifique à exécuter?

$ phpunit –configuration config.xml

config.xml:

  library   library/XXX/FormTest.php library/XXX/Form   

Voici le code comme si PHPUnit 3.7.13

 $ phpunit --configuration config.xml --testsuite Library $ phpunit --configuration config.xml --testsuite XXX_Form 

Si vous souhaitez exécuter un groupe de suites de tests, vous pouvez le faire

   library   library/XXX/FormTest.php library/XXX/Form   library library/XXX/FormTest.php library/XXX/Form   

alors

 $ phpunit --configuration config.xml --testsuite Both 

Malheureusement, PHPUnit ne supporte pas les suites de tests nestedes comme celle-ci

    library   library/XXX/FormTest.php library/XXX/Form    

Donc, si vous voulez exécuter des groupes de suites de test de cette façon, vous devez disposer de la duplication de la configuration XML!

Ce n’est pas possible dans les versions actuelles de PHPUnit, comme en témoignent ces messages dans la liste de diffusion de phpunit-user: http://thread.gmane.org/gmane.comp.php.phpunit.user/1302

Mais il existe une alternative, vous pouvez simplement passer un chemin à phpunit.

 phpunit library/XXX 

Cela exécuterait tous les tests dans le répertoire library / XXX

Si cela ne vous suffit pas, une autre option consiste à utiliser l’ annotation @group pour diviser les tests en différentes catégories qui pourraient ensuite être exécutées de manière sélective.

À partir de phpunit 6.1, vous pouvez utiliser l’atsortingbut defaultTestSuite dans le fichier de configuration xml, c’est comme utiliser une option par défaut, phpunit --testsuite xxx et est surchargé.

Une autre option consiste à créer un fichier de configuration distinct pour chaque suite de tests que vous souhaitez tester séparément. Il y a une surcharge dans le fait que vous devrez peut-être copier / coller les parameters en double, mais vous pouvez ensuite spécifier chaque fichier de configuration si nécessaire.

Les autres réponses sont correctes. Vous ne pouvez pas faire cela en utilisant une configuration xml, mais vous pouvez faire le même type de configuration en PHP.

Ce n’est certainement pas la chose la plus jolie, mais elle devrait vous donner les fonctionnalités dont vous avez besoin.

Vous avez fourni la configuration XML

   library   library/XXX/FormTest.php library/XXX/Form   

Hypothétiquement, disons que votre répertoire “library” contient 3 fichiers:

 library XXX FormTest.php Unit unittest1.php unittest2.php 

Et que chacun des fichiers contient 1 test par convention de nommage parfaite, par exemple: FormTest contient testForm ()

Pour la configuration, nous allons créer une configuration contenant tout:

  

Ensuite, nous allons créer une classe selon les conventions de nommage de phpunit. Vous pouvez le nommer comme vous voulez, car nous ne l’utiliserons jamais ...

 class LibraryConfigTest extends PHPUnit_Framework_TestCase { 

Chaque "suite de tests" sera simplement une méthode qui exécute les tests souhaités. Nommez les méthodes que vous voulez, car encore une fois, nous ne les utiliserons jamais. Phpunit se chargera de la course. Assurez-vous de les commenter dans des groupes afin de savoir comment les exécuter.

 /** * All Tests in Library * @group Library **/ public function testLibrary() { UnitTest1::testUnit1(); UnitTest2::testUnit2(); FormTest::testForm(); } /** * All Form tests in library/XXX * @group XXX_Form **/ public function testForm() { FormTest::testForm(); } } ?> 

Maintenant, pour obtenir la fonctionnalité que vous souhaitez, lancez simplement la "config" sur le groupe souhaité.

 phpunit --group XXX_Form library_config.php phpunit --group Library library_config.php 

Comme je l’ai dit, ce code est moche et certainement pas bon car il nécessitera une maintenance constante, mais il vous donnera les fonctionnalités que vous recherchez.

Espérons que Bergmann appenda cette fonctionnalité lors de son prochain tour, bien que cela ne semble pas probable car il semble l' ignorer .