Accueil » PHP Les tests unitaires

PHP Les tests unitaires

Les tests unitaires en php permettent de vérifier que notre code fonctionne comme on le souhaite en vérifiant le résultat des méthodes de notre application. Pour réaliser les tests unitaires en Php, nous allons utilisé PHPUnit.

Logo PHPUNIT

Prérequis :

PHP – Les tests unitaires

Avant de commencer nous allons importer la bibliothèque PHPUnit à l’aide de Composer. Composer doit déjà être intégré dans votre projet. Si ce n’est pas encore le cas, je vous invite à suivre la procédure suivante : installer Composer.
On utilise le flag dev car les tests unitaires ne se réalisent pas sur la version en production.

composer require --dev phpunit/phpunit

Créer un fichier phpunit.xml à la racine du projet de votre application, et ajouté le contenu suivant :

<?xml version="1.0" encoding="UTF-8"?>

<phpunit colors="true">
    <testsuite name="Nom Application">
        <directory>./tests</directory>
    </testsuite>
</phpunit>

La valeur dans la balise directory spécifie l’emplacement des classes de tests que nous allons réalisé (par défaut dans le dossier « tests » à la racine du projet). Également on définie

Dans ce dossier nous allons créer nos classes de test. Pour ce faire, il faut reprendre le nom de votre classe puis ajouté « Test » à la fin du nom de votre classe.

Ensuite on va lui spécifier qu’elle est hérité de la classe PHPUnit\Framework\TestCase, comme ci dessous :

Puis enfin nous allons réaliser les méthodes de vérifications en les nommant avec le préfixe « test » suivi du nom de la méthode testé. La méthode ne retourne rien puisqu’elle réalise une vérification. Pour faire cette vérification nous allons utilisé la méthode assertEquals. Elle vérifie que le premier paramètre (la valeur attendue) soit égale au deuxième paramètre (ce que la méthode testée à retournée).

<?php 

use Model\Carburant;
use PHPUnit\Framework\TestCase;

class CarburantTest extends TestCase
{
    /**
     * Test que le format de l'id soit correct
     *
     * @return void
     */
    public function testGetId():void
    {
        $carburant = new Carburant(1, "Essence");
        $this->assertEquals(1, $carburant->getId(), "L'id du carburant n'est pas correct");
    }

    /**
     * Test que le format du libelle soit correct
     *
     * @return void
     */
    public function testGetLibelle():void
    {
        $carburant = new Carburant(1, "Essence");
        $this->assertEquals("Essence", $carburant->getLibelle(), "Le libelle du carburant n'est pas correct");
    }
    
    /**
     * Test que le format du Carburant soit correct
     *
     * @return void
     */
    public function testToStr():void
    {
        $carburant = new Carburant(1, "Essence");
        $this->assertEquals("ID : 1\nLibelle : Essence\n", $carburant->__toString(), "Le carburant n'est pas correctement affiché");
    }
}

Enfin votre classe de test construite vous pouvez lancer la commande réalisation des test :

php vendor/phpunit/phpunit/phpunit

Puis une fois les tests finis si tous c’est bien passé voici le résultat que vous devriez obtenir :

Php les résultats des tests unitaires

En cas de résultats différents de l’exécution de votre commande soit :
– Vous n’avez pas respecté l’emplacement de votre dossier de test
– Vos méthodes testés ne retournes pas les valeurs correspondantes.
– Les noms de vos méthodes ou classes de tests ne correspondent pas

Sources :

https://phpunit.de/getting-started/phpunit-9.html
https://docs.phpunit.de/en/11.0/
https://github.com/sebastianbergmann/phpunit

Susceptible de vous intéresser :