Le lanceur de tests en ligne de commandes de PHPUnit peut être appelé via
la commande phpunit. Le code suivant montre comment exécuter
des tests avec le lanceur de tests en ligne de commandes de PHPUnit:
phpunit ArrayTest
PHPUnit 4.2.0 by Sebastian Bergmann.
..
Time: 0 seconds
OK (2 tests, 2 assertions)Pour chaque test exécuté, l'outil en ligne de commandes de PHPUnit affiche un caractère pour indiquer l'avancement:
.Affiché quand le test a réussi.
FAffiché quand une assertion échoue lors de l'exécution d'une méthode de test.
EAffiché quand une erreur survient pendant l'exécution d'une méthode de test.
SAffiché quand le test a été sauté (voir Chapitre 7, Tests incomplets et sautés).
IAffiché quand le test est marqué comme incomplet ou pas encore implémenté (voir Chapitre 7, Tests incomplets et sautés).
PHPUnit différencie les échecs et les
erreurs. Un échec est une assertion PHPUnit violée
comme un appel en échec de assertEquals().
Une erreur est une exception inattendue ou une erreur PHP. Parfois
cette distinction s'avère utile car les erreurs tendent à être plus faciles
à corriger que les échecs. Si vous avez une longue liste de problèmes, il vaut
mieux éradiquer d'abord les erreurs pour voir s'il reste encore des échecs
uen fois qu'elles ont été corrigées.
Jetons un oeil aux options du lanceur de tests en ligne de commandes dans le code suivant :
phpunit --help
PHPUnit 4.2.0 by Sebastian Bergmann.
Usage: phpunit [switches] UnitTest [UnitTest.php]
phpunit [switches] <directory>
--log-junit <file> Log test execution in JUnit XML format to file.
--log-tap <file> Log test execution in TAP format to file.
--log-json <file> Log test execution in JSON format.
--coverage-clover <file> Generate code coverage report in Clover XML format.
--coverage-html <dir> Generate code coverage report in HTML format.
--coverage-php <file> Serialize PHP_CodeCoverage object to file.
--coverage-text=<file> Generate code coverage report in text format.
Default to writing to the standard output.
--testdox-html <file> Write agile documentation in HTML format to file.
--testdox-text <file> Write agile documentation in Text format to file.
--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.
--loader <loader> TestSuiteLoader implementation to use.
--printer <printer> TestSuiteListener implementation to use.
--repeat <times> Runs the test(s) repeatedly.
--tap Report test execution progress in TAP format.
--testdox Report test execution progress in TestDox format.
--colors Use colors in output.
--stderr Write to STDERR instead of STDOUT.
--stop-on-error Stop execution upon first error.
--stop-on-failure Stop execution upon first error or failure.
--stop-on-skipped Stop execution upon first skipped test.
--stop-on-incomplete Stop execution upon first incomplete test.
--strict Run tests in strict mode.
-v|--verbose Output more verbose information.
--debug Display debbuging information during test execution.
--process-isolation Run each test in a separate PHP process.
--no-globals-backup Do not backup and restore $GLOBALS for each test.
--static-backup Backup and restore static attributes for each test.
--bootstrap <file> A "bootstrap" PHP file that is run before the tests.
-c|--configuration <file> Read configuration from XML file.
--no-configuration Ignore default configuration file (phpunit.xml).
--include-path <path(s)> Prepend PHP's include_path with given path(s).
-d key[=value] Sets a php.ini value.
-h|--help Prints this usage information.
--version Prints the version and exits.phpunit UnitTest
Exécute les tests qui sont fournis par la classe
UnitTest. Cette classe est supposée être déclarée
dans le fichier source UnitTest.php.
UnitTest doit soit être une classe qui hérite
de PHPUnit_Framework_TestCase soit une classe qui
fournit une méthode public static suite() retournant
un objet PHPUnit_Framework_Test, par exemple
une instance de la classe
PHPUnit_Framework_TestSuite.
phpunit UnitTest UnitTest.php
Exécute les tests qui sont fournis par la classe
UnitTest. Cette classe est supposée être déclarée
dans le fichier source indiqué.
--log-junitGénère un fichier de log au format JUnit XML pour les tests exécutés. Voir Chapitre 14, Journalisation pour plus de détails.
--log-tapGénère un fichier de log utilisant le format Test Anything Protocol (Protocol de test universel ou TAP) pour les tests exécutés. Voir Chapitre 14, Journalisation pour plus de détails.
--log-jsonGénère un fichier de log en utilisant le format JSON. Voir Chapitre 14, Journalisation pour plus de détails.
--coverage-htmlGénère un rapport de couverture de code au format HTML. Voir Chapitre 10, Analyse de couverture de code pour plus de détails.
Merci de noter que cette fonctionnalité n'est seulement disponible que lorsque les extensions tokenizer et Xdebug sont installées.
--coverage-cloverGénère un fichier de log au format XML avec les informations de couverture de code pour les tests exécutés. Voir Chapitre 14, Journalisation pour plus de détails.
Merci de noter que cette fonctionnalité n'est seulement disponible que lorsque les extensions tokenizer et Xdebug sont installées.
--coverage-phpGénère un objet sérialisé PHP_CodeCoverage contenant les informations de couverture de code.
Merci de noter que cette fonctionnalité n'est seulement disponible que lorsque les extensions tokenizer et Xdebug sont installées.
--coverage-textGénère un fichier de log ou une sortie écran sur la ligne de commandes en format humainement lisible avec les informations de couverture de code pour les tests exécutés. Voir Chapitre 14, Journalisation pour plus de détails.
Merci de noter que cette fonctionnalité n'est seulement disponible que lorsque les extensions tokenizer et Xdebug sont installées.
--testdox-html et --testdox-textGénère la documentation agile au format HTML ou texte pur pour les tests exécutés. Voir Chapitre 11, Autres utilisations des tests pour plus de détails.
--filterExécute seulement les tests dont le nom correspond au motif donné. Le motif peut être soit le nom d'un test particulier, soit une expression rationnelle qui correspond à plusieurs noms de tests.
--group
Exécute seulement les tests appartenant à un/des groupe(s) indiqué(s). Un test
peut être signalé comme appartenant à un groupe en utilisant l'annotation
@group.
L'annotation @author est un alias pour
@group permettant de filtrer les tests en se basant
sur leurs auteurs.
--exclude-group
Exclut les tests d'un/des groupe(s) indiqué(s). Un test peut être signalé
comme appartenant à un groupe en utilisant l'annotation @group.
--list-groupsListe les groupes de tests disponibles.
--loader
Indique l'implémentation de PHPUnit_Runner_TestSuiteLoader
à utiliser.
Le chargeur standard de suite de tests va chercher les fichiers source
dans le répertoire de travail actuel et dans chaque répertoire qui
est indiqué dans la directive de configuration PHP include_path.
Suivant les conventions de nommage PEAR, le nom d'une classe tel que
Projet_Paquetage_Classe est calqué sur le nom de fichier source
Projet/Paquetage/Classe.php.
--printer
Indique l'afficheur de résultats à utiliser. Cette classe d'afficheur doit
hériter de PHPUnit_Util_Printer et implémenter l'interface
PHPUnit_Framework_TestListener.
--repeatRépéter l'exécution du(des) test(s) le nombre indiqué de fois.
--tapRapporte l'avancement des tests en utilisant le Test Anything Protocol (TAP). Voir Chapitre 14, Journalisation pour plus de détails.
--testdoxRapporte l'avancement des tests sous forme de documentation agile. Voir Chapitre 11, Autres utilisations des tests pour plus de détails.
--colorsUtilise des couleurs pour l'affichage.
--stderr
Utilise optionnellement STDERR au lieu de
STDOUT pour l'affichage.
--stop-on-errorArrête l'exécution à la première erreur.
--stop-on-failureArrête l'exécution à la première erreur ou au premier échec.
--stop-on-skippedArrête l'exécution au premier test sauté.
--stop-on-incompleteArrête l'exécution au premier test incomplet.
--strictExécute les tests en mode strict.
--verboseAffiche des informations plus détaillées, par exemple le nom des tests qui sont incomplets ou qui ont été sautés.
--process-isolationExécute chaque test dans un processus PHP distinct.
--no-globals-backupNe pas sauvegarder et restaurer $GLOBALS. Voir la section intitulée « Etat global » pour plus de détails.
--static-backupSauvegarde et restaure les attributs statiques des classes définies par l'utilisateur. Voir la section intitulée « Etat global » pour plus de détails.
--bootstrapUn fichier PHP "amorce" ("bootstrap") est exécuté avant les tests.
--configuration, -cLit la configuration dans un fichier XML. Voir Annexe B, Le fichier de configuration Configuration pour plus de détails.
Si phpunit.xml ou
phpunit.xml.dist (dans cet ordre) existent dans le
répertoire de travail actuel et que --configuration n'est
pas utilisé, la configuration sera automatiquement
lue dans ce fichier.
--no-configuration
Ignorer phpunit.xml et
phpunit.xml.dist du répertoire de travail actuel.
--include-path
Préfixe l'include_path PHP avec le(s) chemin(s) donné(s).
-dFixe la valeur des options de configuration PHP données.
--debugAffiche des informations de débogage telles que le nom d'un test quand son exécution démarre.