4. Lancement des tests¶
4.1. Exécutable¶
atoum dispose d’un exécutable qui vous permet de lancer vos tests en ligne de commande.
4.1.1. Avec l’archive phar¶
Si vous utiliser l’archive phar, elle est déjà exécutable.
4.1.1.1. linux / mac¶
$ php path/to/atoum.phar
4.1.1.2. windows¶
C:\> X:\Path\To\php.exe X:\Path\To\atoum.phar
4.2. Fichiers à exécuter¶
4.2.1. For specific files¶
Pour lancer les tests d’un fichier, il vous suffit d’utiliser l’option -f ou –files.
$ ./bin/atoum -f tests/units/MyTest.php
4.2.2. Pour un dossier¶
Pour lancer les tests d’un répertoire, il vous suffit d’utiliser l’option -d ou –directories.
$ ./bin/atoum -d tests/units
Vous trouverez d’autres arguments dans la section approprié lié à la ligne de commande.
4.3. Filtres¶
Une fois que vous avez préciser à atoum les fichiers à exécuter, vous pouvez filtrer ce qui sera réellement exécuter.
4.3.1. Par espace de noms¶
Pour filtrer sur les espace de nom, par example exécuter le test seulement sur un espace de nom, il suffit d’utiliser l’option -ns
or --namespaces
.
$ ./bin/atoum -d tests/units -ns mageekguy\\atoum\\tests\\units\\asserters
Note
Il est important de doubler chaque backslash pour éviter qu’ils soient interprétés par le shell.
4.3.2. Une classe ou une méthode¶
Pour filtrer sur une classe ou une méthode, c’est-à-dire exécuter seulement des tests d’une classe ou une méthode, il suffit d’utiliser l’option -m
ou --methods
.
$ ./bin/atoum -d tests/units -m mageekguy\\atoum\\tests\\units\\asserters\\string::testContains
Note
Il est important de doubler chaque backslash pour éviter qu’ils soient interprétés par le shell.
Vous pouvez remplacer le nom de la classe ou de la méthode par *
pour signifier tous
.
$ ./bin/atoum -d tests/units -m mageekguy\\atoum\\tests\\units\\asserters\\string::*
En utilisant « * » au lieu d’un nom de classe signifie que vous pouvez filtrer par nom de la méthode.
$ ./bin/atoum -d tests/units -m *::testContains
4.3.3. Tags¶
Tout comme de nombreux outils, dont Behat, atoum vous permet de taguer vos tests unitaires et de n’exécuter que ceux ayant un ou plusieurs tags spécifiques.
Pour cela, il faut commencer par définir un ou plusieurs tags pour une ou plusieurs classes de tests unitaires.
Cela se fait très simplement grâce aux annotations et à la balise @tags :
<?php
namespace vendor\project\tests\units;
require_once __DIR__ . '/atoum.phar';
use mageekguy\atoum;
/**
* @tags thisIsOneTag thisIsTwoTag thisIsThreeTag
*/
class foo extends atoum\test
{
public function testBar()
{
// ...
}
}
De la même manière, il est également possible de taguer les méthodes de test.
Note
Les tags définis au niveau d’une méthode prennent le pas sur ceux définis au niveau de la classe.
<?php
namespace vendor\project\tests\units;
require_once __DIR__ . '/atoum.phar';
use mageekguy\atoum;
class foo extends atoum\test
{
/**
* @tags thisIsOneMethodTag thisIsTwoMethodTag thisIsThreeMethodTag
*/
public function testBar()
{
// ...
}
}
Une fois les tags nécessaires définis, il n’y a plus qu’à exécuter les tests avec le ou les tags adéquates à l’aide de l’option --tags
, ou -t
dans sa version courte :
$ ./bin/atoum -d tests/units -t thisIsOneTag
Attention, cette instruction n’a de sens que s’il y a une ou plusieurs classes de tests unitaires et qu’au moins l’une d’entre elles porte le tag spécifié. Dans le cas contraire, aucun test ne sera exécuté.
Il est possible de définir plusieurs tags :
$ ./bin/atoum -d tests/units -t thisIsOneTag thisIsThreeTag
Dans ce dernier cas, les classes de tests ayant été tagués soit avec thisIsOneTag, soit avec thisIsThreeTag, seront les seules à être exécutées.