Lancer un ensemble de test en une commande

Frédéric Hardy edited this page Sep 6, 2013 · 3 revisions

Dans certains cas, il est intéressant de lancer tous les tests de un ou plusieurs répertoires en une seule commande, de la manière suivante :

# ./bin/atoum

L'une des façon de parvenir à ce résultat est d'ajouter le code suivant dans le fichier de configuration par défaut de atoum, nommé .atoum.php :

<?php

$runner->addTestFromDirectory('path/to/unit/tests/directory');

Cependant, cette méthode présente l'inconvénient de déclencher l'exécution des tests compris dans le répertoire sélectionné même lorsque l'utilisateur demande l'exécution d'un fichier de test spécifique ou d'un répertoire de tests spécifique.
Ainsi, avec le fichier de configuration .atoum.php défini ci-dessus, la commande suivante entrainera l'exécution des tests contenus dans le fichier path/to/specific/test/file.php ainsi que ceux contenus dans path/to/unit/tests/directory :

# ./bin/atoum -f path/to/specific/test/file.php

En effet, le fichier de configuration .atoum.php est utilisé systématiquement, indépendamment de la façon dont atoum est utilisé.
La solution pour éviter cela est d'utiliser l'argument --test-all car il est possible de définir les tests qui seront exécutés lorsqu'il est utilisé, via un fichier de configuration (en clair, le comportement de cet argument est programmable par l'utilisateur).
Il suffit pour cela par exemple de remplacer le contenu du fichier .atoum.php précédent par :

<?php

$script->addTestAllDirectory('path/to/unit/tests/directory');

Dans ce cas, l'utilisation de l'argument --test-all déclenchera l'exécution des tests contenus dans le répertoire path/to/unit/tests/directory :

# ./bin/atoum --test-all

La commande est un peu plus verbeuse que le simple ./bin/atoum évoqué en introduction, mais en contrepartie, elle est explicite et facilement compréhensible.
Et bien évidemment, il est possible d'ajouter autant de répertoires que nécessaire et il est possible de l'utiliser dans n'importe quel fichier de configuration passé à atoum via les arguments -c ou --configurations.