• 12 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 29/05/2019

Mise en place d'un outil pour implémenter ses tests unitaires

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Les tests garantissent la qualité de votre code et de votre application. Ce travail de test va vous demander du développement en plus de ce que vous avez à produire pour que votre application fonctionne. Pour vous aider dans cette tâche, vous pouvez utiliser une librairie tierce.

Nous allons utiliser PHPUnit. C'est la référence en matière de tests avec PHP ! Il fournit toute une suite de classe et méthodes utiles pour faciliter l'écriture de tests, que je vais vous faire découvrir dans ce cours. Bien évidemment, il existe d'autres outils pour le test unitaire : libre à vous d'en tester plusieurs et de vous faire votre propre idée.

Dans le cadre de ce cours, vous écrirez vos tests dans une application Symfony. Nous allons l'installer ensemble : je vous invite à installer dès maintenant une nouvelle application Symfony full stack à l'aide de l'installer de Symfony.

Installer PHPUnit avec Composer

Commencez par installer PHPUnit via composer dans votre application de base. Pour cela, dans le fichier composer.json, ajoutez la ligne suivante :

{
    // …
    },
    "require": {
        // …
        "phpunit/phpunit": "5.7.*"
    },
    // …
}

Puis dans votre logiciel de ligne de commande préféré, lancez la commande suivante :

$ composer update phpunit/phpunit

Pour vérifier que PHPUnit est bien installé, avec votre logiciel de ligne de commande, placez-vous à la racine de votre projet Symfony, et lancez la commande suivante :

$ vendor/bin/phpunit --help

Vous devez obtenir la sortie suivante :

Sortie console
Sortie console

Obtenir le rapport de couverture de code (code coverage report)

Avant de commencer à implémenter vos premier tests, il est intéressant de suivre le taux de couverture de code des tests que vous allez écrire.

Concrètement, écrire un test, c'est exécuter le code à tester, c'est-à-dire :

  • instancier une classe ;

  • appeler une méthode en lui passant des paramètres (si besoin est) ;

  • en vérifier la sortie.

PHPUnit fournit la possibilité de générer un rapport permettant de savoir si une instruction est exécutée ou non. Je vais maintenant vous montrer comment générer votre premier rapport !

Lancer les tests PHPUnit

Pour obtenir un rapport de couverture de code, il vous faut d'abord être en mesure de lancer des tests.

Mais je n'ai pas encore écrit de tests… Qu'est-ce que je vais lancer ?

Pas de panique ! Lorsque vous avez installé votre nouvelle application Symfony, un dossier  tests a été livré avec. Superbe ! Nous avons justement des tests à exécuter. :)

Premier test fourni à l'installation de Symfony full stack
Premier test fourni à l'installation de Symfony full stack

La classe DefaultControllerTest correspond à un test fonctionnel sur la page d'accueil fournie avec Symfony full stack. Je ne vais pas m'attarder sur le code de cette classe, car je souhaite plutôt vous expliquer le moyen de lancer l'ensemble des tests implémentés avec Symfony. Je vous invite donc à lancer la commande suivante depuis la racine de votre projet :

$ vendor/bin/phpunit
Résultat après lancement des tests
Résultat après lancement des tests

Bravo ! Vous venez de lancer vos premiers tests ! :soleil: Bon, ce ne sont pas encore les nôtres, mais cela ne saurait tarder. ^^

Générer le rapport de couverture de code

Revenons à notre mission initiale, générer le rapport de taux de couverture de code. Voici la commande à lancer pour le générer :

$ vendor/bin/phpunit --coverage-html web/test-coverage

Avec cette commande, vous demandez à générer le rapport sous forme de pages HTML dans le dossier web/test-coverage (le dossier test-coverage n'a pas besoin d'être créé, PHPUnit s'en charge pour vous).

Tout est installé comme il faut ? Parfait ! Lancez à nouveau la commande et vous devriez obtenir le résultat suivant :

Génération de la couverture de code
Génération du rapport de couverture de code

Le nouveau dossier contenant tous les fichiers HTML contenant les informations du rapport a été créé dans votre projet :

Dossier contenant le rapport HTML
Dossier contenant le rapport HTML

Il ne nous reste plus qu'à le consulter ! Je vous invite à ouvrir le fichier index.html avec votre navigateur préféré.

Rapport de couverture de code par les tests actuellement implémenté
Rapport de couverture de code suite aux tests actuellement implémentés

Comme vous pouvez le voir, tout le code actuellement écrit dans notre application est couvert. Vous pouvez cliquer sur les fichiers et dossiers pour consulter le code de l'application et découvrir le détail de couverture. En voici un exemple :

Visualiser le code couvert
Visualiser le code couvert

Toutes les lignes vertes correspondent aux lignes de code exécutées par les tests. Si une ligne est rouge, c'est que le code n'est pas encore couvert par les tests implémentés. Si une ligne est orange, le code est inatteignable.

 

Dans le prochain chapitre, nous allons écrire notre premier test unitaire ensemble. ^^

Exemple de certificat de réussite
Exemple de certificat de réussite