Utilisation du Framework PHPUnit avec l’IDE PhpStorm

php-unit

Pré-requis

Disposer des installations suivantes :

  • Php
  • Phpunit
  • PhpStorm

Dans les exemples proposés dans cet article, les versions utilisées sont PHP 5.5, PHPUnit 3.7.28, et PhpStorm 8

Préparation

  • Créer un fichier phpunit.xml à partir de celui présent sur ce repository git : https://github.com/sebastianbergmann/phpunit
  • Configuration PhpStorm :
    • File >> Settings >> PHP >> Ajouter le path de php (include path) puis sélectionner l’interpréteur PHP

      Configuration PHP

      Configuration PHP

    • File >> Settings >> PHP >> Phpunit >> Choisir "Load from include path" puis sélectionner le fichier de configuration phpunit.xml qui sera utilisé lors du lancement des tests

      Configuration PHPUnit

      Configuration PHPUnit

Tester

Voici les étapes à suivre pour créer un premier test :

    • Indiquer à PHPUnit le(s) dossier(s) qui contiendra(ont) les classes de test. Pour cela, créer un dossier puis faire un clic droit >> Mark Directory As >> Test Sources Root.
    • Une fois ce dossier créé, on peut lui ajouter une nouvelle classe de test. Effectuer un clic droit sur celui-ci puis sélectionner new >> PHPUnit >> PHPUnit Test
Ajout d'une classe de test

Ajout d'une classe de test

Une fois cette classe créée, on peut donc commencer à lui ajouter des méthodes permettant d'effectuer des tests. Pour qu'elles soient reconnues par PHPUnit comme des méthodes de test il existe deux solutions :

  • Donner un nom de méthode ayant comme préfix « test », par exemple « testFonctionnalite1 »
  • Utiliser l'annotation @test, avec le nom de méthode « fonctionnalite1 » par exemple

Lorsqu'une méthode de ce type est présente dans la classe, il est ensuite possible de lancer le test de manière individuelle en effectuant un clic droit sur le nom de la méthode puis en cliquant sur « run ». On peut également choisir de lancer consécutivement toutes les méthodes de tests présentes dans la classe, en effectuant le clic droit sur le nom de la classe puis en cliquant également sur « run ».

A chaque fois que l'exécution d'un test est terminée, un symbole indique le résultat (échoué, réussi ou passé) et si nécessaire des informations sont précisées sur l'assertion qui a fait échoué le test.

On peut également indiquer à un test qu'il ne doit pas être lancé, pour cela il suffit de faire appel au début du test à la méthode markTestSkipped() en précisant en paramètre le message indiquant pourquoi on a choisi de le passer. Une fois lancé, on peut voir l'icône jaune indiquant que ce test n'a pas été joué.

Test passé

Test passé

Le framework PHPUnit propose diverses possibilités pour réaliser nos tests. En voici quelques exemples :

  • Des méthodes qui permettent de faire des tests basiques sur des variables, comme la vérification d'un booléen, d'une variable non nulle ou l'égalité entre deux valeurs.Condition d'égalité
  • La méthode assertThat() qui permet d'appliquer une contrainte que l'on aura préalablement créée sur l'objet que l'on souhaite tester.
  • On peut également utiliser l'annotation @expectedException permettant d'indiquer que l'on attend en retour du test une levée d'exception.
    Test réussi sur la levée d'une exception

    Test réussi sur la levée d'une exception

    Test échoué sur la levée d'une exception

    Test échoué sur la levée d'une exception

  • L'annotation @dataProvider permet d'appliquer différents scénarios pour le même test. Le principe est de permettre plusieurs exécutions de notre test avec différents paramètres passés en entrée pour chacune de ces exécutions. Dans la capture suivante, le test va être exécuté deux fois, avec deux couples de paramètres différents présents dans le tableau associatif renvoyé par le dataProvider. On peut voir que pour le premier couple de paramètres le test échoue, tandis que pour le deuxième il passe correctement.
Test de plusieurs scénarios

Test de plusieurs scénarios

Il existe également de nombreuses autres annotations et assertions que l'on peut retrouver sur le site https://phpunit.de/manual/current/en/index.html.

Conclusion

L'utilisation de PHPUnit couplée à l'IDE PHPStorm permet de simplifier la réalisation et surtout l'exécution des tests pouvant composer une application. Ces tests pourront ensuite être utilisés dans le cadre d'une intégration continue, permettant ainsi de détecter des régressions lors de nouvelles modifications de l'application.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.