Installation de PHPUnit (macOS)
Afin d’installer PHPUnit nous allons devoir ouvrir le terminal et taper les commandes suivantes :
1 | $ curl https://phar.phpunit.de/phpunit.phar -L -o phpunit.phar |
Ces commandes permettent de télécharger le fichier .phar
. (Un fichier .PHAR
est une PHP Archive, une application PHP compactée dans un seul et même fichier). Elles permettent ensuite d’étendre le niveau des droits sur ce dernier fichier (lecture, écriture, exécution). Nous déplaçons ensuite phpunit.phar
dans le dossier /usr/local/bin/phpunit
afin que nous puissions l’exécuter directement depuis notre terminal via la commande phpunit
.
Création du fichier phpunit.xml contenant l’ensemble des variables d’environnement
Si vos scripts PHP font usage de variables d’environnement. Vous vous devez de fournir une valeur à ces variables dans vos tests unitaires. En effet si vous exécutez vos tests unitaires sans ces variables définies vos test échoueront, faute de variables définies.
PHPUnit permet la configuration de ces variables de manière très simple. Il vous suffit de créer un fichier nommé phpunit.xml
à la racine du dossier de votre application :
1 |
|
Dans notre cas nous définissons ici 3
variables d’environnement nommées DB_HOST
, DB_USER
et DB_PASS
ayant respectivement les valeurs 127.0.0.1:3306
, root
, root
.
D’autre part dans ce fichier de configuration est aussi définit un fichier de bootstrap
qui va nous permettre de créer une procédure de démarrage spécifique au test de notre application.
Création du script de bootstrap.
Notre script de bootstrap
devra effectuer une tâche :
- Charger l’ensemble des classes que nous avons développées afin que nous n’ayons pas à faire des
require
dans chaque fichier décrivant un test unitaire. Cette astuce permet de gagner un temps précieux !
1 |
|
Si toutes vos classes sont regroupées dans le dossier classes
(sans sous-dossiers) situé à la racine de votre application vous pouvez adopter cet autoloader simple. Une autre contrainte est que le nom de vos classes doit correspondre trait pour trait au nom du fichier dans lesquels elles sont définies.
Jess Telford fournit une implémentation plus complexe permettant d’inclure les sous dossiers : http://jes.st/2011/phpunit-bootstrap-and-autoloading-classes/.
Un test unitaire
1 |
|
Et voilà. Vous pouvez tester des fonctions disposant de variables d'environnement
et tester toutes vos classes sans avoir à penser à appeler require
à chaque utilisation d’une nouvelle classe.