Mise en place de PHPUnit et création d'un test
Durée : 1 h
Environnement de travail : visual Studio Code (ou tout autre éditeur de texte), PHP, Composer, Symfony CLI
Pré-requis : PHP
Contexte :
Dans le cadre du développement d'une application web, il est essentiel de tester son code afin de détecter et corriger les bogues et comportements ne répondant pas aux exigences initiales.
En programmation, un test unitaire permet de s'assurer du bon fonctionnement d'une partie bien précise d'un programme appelée « unité ».
Pour répondre à ce besoin, nous passerons par une étape de configuration avant de découvrir comment mettre en place et exécuter correctement des tests unitaires.
Objectifs
Découvrir le composant Symfony PHPUnit Bridge,
Découvrir le framework de test PHPUnit,
Installer et configurer PHPUnit au sein d'un projet Symfony,
Découvrir la structure et l'organisation des tests unitaires au sein d'un projet.
Contexte :
À travers cette partie, nous allons découvrir l'outil PHPUnit, son installation et sa configuration au sein d'un projet Symfony ainsi que la manière de structurer et organiser nos tests unitaires.
Symfony intègre un composant offrant un accès à des fonctionnalités liées aux tests unitaires. Ce composant, c'est PHPUnit Bridge.
Comme son nom l'indique, ce composant Symfony va permettre à notre projet de faire le « pont » avec l'outil PHPUnit. Il s'agit d'un framework dédié à la réalisation de tests pour le langage de programmation PHP.
Remarque :
La documentation en ligne PHPUnit est complète et entièrement disponible en français alors n'hésitez pas à y jeter un œil au besoin → PHPUnit Manual
Méthode :
Pour avoir accès aux utilitaires PHPUnit au sein d'un projet Symfony, il nous faut, d'abord, installer le composant PHPUnit Bridge. Pour cela, il suffit de saisir une simple commande Composer :
$ composer require —dev symfony/phpunit-bridge
Une fois la dépendance correctement installée, un message en console vous recommande d'écrire vos classes de test dans le dossier « tests » généré automatiquement lors de l'installation.
Le second point apparaissant en console évoque la commande que nous utiliserons pour exécuter nos tests, lorsque ceux-ci seront écrits, bien évidemment.
Cette commande fait d'ailleurs référence au fichier « phpunit » ajouté au dossier « bin » de votre projet Symfony.
Exécutons sans plus tarder cette commande :
$ php bin/phpunit
Même si aucun test n'a encore été écrit, la première exécution de cette commande va télécharger le framework PHPUnit et rendre ses classes disponibles depuis notre application.
Comme vous pouvez le constater, une fois toutes les dépendances téléchargées et installées dans votre projet, tous les tests unitaires sont exécutés. Bien entendu, dans notre cas, il n'y en a encore aucun écrit. La commande renvoie donc un message « No tests executed ! » ainsi que plusieurs autres informations :
Le numéro de version de PHPUnit : 7.5.20,
L'auteur du framework : Sebastian Bergmann entre autres contributeurs,
Le temps d'exécution : 17,97 secondes - ce temps est élevé ici parce qu'il prend en compte le téléchargement et l'installation des dépendances associées. L'exécution sera beaucoup plus rapide les prochaines fois !
La mémoire vive utilisée : 4,00 MB.
C'est donc la commande $ php bin/phpunit
qui exécute l'ensemble des tests trouvés dans le dossier « tests ». Ceux-ci devront être écrits dans des classes de tests dont nous découvrirons la syntaxe dans la prochaine partie de ce chapitre.
Notez que cette commande permet également d'exécuter une sélection de tests plus précise :
D'un répertoire stockant plusieurs classes de test :
$ php bin/phpunit tests/MonRepertoire
D'une classe de test directement :
$ php bin/phpunit tests/MaClasseDeTest.php
Syntaxe : À retenir
Pour résumer, la commande $ composer require —dev symfony/phpunit-bridge
permet d'installer le composant PHPUnitBridge donnant accès aux utilitaires PHPUnit ainsi qu'à la commande $ php bin/phpunit
, dont la première exécution permet l'installation du framework de test PHPUnit ainsi que ses classes au sein de notre projet Symfony. L'exécution de cette commande lance tous les tests écrits dans des classes de test se trouvant dans le dossier « tests » de votre projet.
Complément :
Documentation officielle de PHPUnit : PHPUnit Manual