91 votes

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

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

$ phpunit --configuration config.xml

config.xml:

 <testsuites>
    <testsuite name="Library">
        <directory>library</directory>
    </testsuite>
    <testsuite name="XXX_Form">
        <file>library/XXX/FormTest.php</file>
        <directory>library/XXX/Form</directory>
    </testsuite>
</testsuites>
 

147voto

Josh Woodcock Points 438

Voici le code comme si PHPUnit 3.7.13

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

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

 <testsuites>
  <testsuite name="Library">
    <directory>library</directory>
  </testsuite>
  <testsuite name="XXX_Form">
    <file>library/XXX/FormTest.php</file>
    <directory>library/XXX/Form</directory>
  </testsuite>
  <testsuite name="Both">
    <directory>library</directory>
    <file>library/XXX/FormTest.php</file>
    <directory>library/XXX/Form</directory>
  </testsuite>
</testsuites>
 

ensuite

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

Malheureusement, PHPUnit ne prend pas en charge les séries de tests imbriquées comme celle-ci.

 <testsuites>
    <testsuite name="Both">
      <testsuite name="Library">
        <directory>library</directory>
      </testsuite>
      <testsuite name="XXX_Form">
        <file>library/XXX/FormTest.php</file>
        <directory>library/XXX/Form</directory>
      </testsuite>
  </testsuite>
</testsuites>
 

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

20voto

Anti Veeranna Points 6319

Ce n'est pas possible dans les versions actuelles de PHPUnit comme en témoignent ces messages dans phpunit-user mailing list: http://thread.gmane.org/gmane.comp.php.phpunit.user/1302

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

phpunit library/XXX

Cela permettrait d'exécuter tous les tests de bibliothèque/XXX annuaire

Si ce n'est pas suffisant pour vous, une autre option est d'utiliser l' annotation@group pour diviser des tests dans différentes catégories qui pourraient ensuite être exécuté de manière sélective.

1voto

Mike Purcell Points 12082

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 en ce que vous devrez peut-être copier / coller les paramètres de duplication, mais vous pourrez ensuite spécifier chaque fichier de configuration selon vos besoins.

1voto

SuperFamousGuy Points 488

Les autres réponses sont correctes. Vous ne pouvez pas faire cela à l'aide d'un fichier xml de config, ce que vous pouvez faire, c'est de faire le même type de config de php.

Ce n'est certainement pas la plus belle chose, mais il devrait vous donner la fonctionnalité dont vous avez besoin.

Vous avez fourni la configuration xml

<testsuites>
  <testsuite name="Library">
    <directory>library</directory>
  </testsuite>
  <testsuite name="XXX_Form">
    <file>library/XXX/FormTest.php</file>
    <directory>library/XXX/Form</directory>
  </testsuite>
</testsuites>

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

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

Et que chacun de ces fichiers contient 1 test en parfait convention d'affectation de noms, par exemple: FormTest contient testForm()

Pour la config, nous allons créer un fichier config qui contient tout:

<?php
include_once "library/XXX/FormTest.php";
include_once "library/Unit/unittest1.php";
include_once "library/Unit/unittest2.php";

Ensuite, nous allons créer une classe par le phpunit conventions de nommage. Vous pouvez l'appeler ce que vous voulez tant que nous ne serons jamais à l'utiliser...

class LibraryConfigTest extends PHPUnit_Framework_TestCase {

Chaque "test suite" sera simplement une méthode qui exécute les tests que vous souhaitez. Nom de l'méthodes tout ce que vous voulez comme, encore une fois, nous ne serons jamais à l'utiliser effectivement. Phpunit va prendre soin de la course. Assurez-vous de les commenter en groupes bien que si vous savez comment l'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 les fonctionnalités que vous voulez il suffit de lancer la "config" contre le groupe que vous souhaitez.

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

Comme je l'ai dit, c'est moche et certainement pas le bon code, il va nécessitent un entretien constant, mais il vous donnera la fonctionnalité que vous recherchez.

Espérons que Bergmann permettra d'ajouter cette fonctionnalité dans son prochain tour, bien qu'il ne semble pas probable qu'il apparaît à peu près en l'ignorant.

-1voto

Andreas Linden Points 6344

il n'est PAS possible de simplement lancer une suite de tests spécifique! -.-

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X