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.
F
Affiché quand une assertion échoue lors de l'exécution d'une méthode de test.
E
Affiché quand une erreur survient pendant l'exécution d'une méthode de test.
S
Affiché quand le test a été sauté (voir Chapitre 7, Tests incomplets et sautés).
I
Affiché 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-junit
Gé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-tap
Gé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-json
Génère un fichier de log en utilisant le format JSON. Voir Chapitre 14, Journalisation pour plus de détails.
--coverage-html
Gé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-clover
Gé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-php
Gé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-text
Gé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-text
Gé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.
--filter
Exé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-groups
Liste 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
.
--repeat
Répéter l'exécution du(des) test(s) le nombre indiqué de fois.
--tap
Rapporte l'avancement des tests en utilisant le Test Anything Protocol (TAP). Voir Chapitre 14, Journalisation pour plus de détails.
--testdox
Rapporte l'avancement des tests sous forme de documentation agile. Voir Chapitre 11, Autres utilisations des tests pour plus de détails.
--colors
Utilise des couleurs pour l'affichage.
--stderr
Utilise optionnellement STDERR
au lieu de
STDOUT
pour l'affichage.
--stop-on-error
Arrête l'exécution à la première erreur.
--stop-on-failure
Arrête l'exécution à la première erreur ou au premier échec.
--stop-on-skipped
Arrête l'exécution au premier test sauté.
--stop-on-incomplete
Arrête l'exécution au premier test incomplet.
--strict
Exécute les tests en mode strict.
--verbose
Affiche des informations plus détaillées, par exemple le nom des tests qui sont incomplets ou qui ont été sautés.
--process-isolation
Exécute chaque test dans un processus PHP distinct.
--no-globals-backup
Ne pas sauvegarder et restaurer $GLOBALS. Voir la section intitulée « Etat global » pour plus de détails.
--static-backup
Sauvegarde et restaure les attributs statiques des classes définies par l'utilisateur. Voir la section intitulée « Etat global » pour plus de détails.
--bootstrap
Un fichier PHP "amorce" ("bootstrap") est exécuté avant les tests.
--configuration
, -c
Lit 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).
-d
Fixe la valeur des options de configuration PHP données.
--debug
Affiche des informations de débogage telles que le nom d'un test quand son exécution démarre.