PHPUnit

PHPUnit est le framework standard de tests unitaires pour PHP. Il permet de vérifier que chaque partie d’un programme PHP fonctionne correctement, en automatisant l’exécution des tests et en fournissant des rapports détaillés.

PHPUnit

Prérequis

PHP image
PHP

PHP (Hypertext Preprocessor) est un lang...

Prochaine étape

Laravel image
Laravel

Laravel est un framework PHP open source...

À propos de PHPUnit

PHPUnit permet de créer des tests automatisés pour :

  • Tester des fonctions et méthodes individuellement (tests unitaires).
  • Vérifier des classes et modules complets (tests d’intégration).
  • Assurer la conformité des comportements attendus de l’application.

Avec PHPUnit, il est possible de détecter rapidement les régressions, de sécuriser les mises à jour et de faciliter la collaboration entre développeurs. Il est souvent utilisé avec Laravel, mais fonctionne avec tout projet PHP.

Installation

Pour installer PHPUnit globalement avec Composer :

1composer global require phpunit/phpunit

Vérification de l’installation :

1phpunit --version

Dans un projet Laravel, PHPUnit est déjà inclus par défaut dans les dépendances de développement.

Exemple de test simple

1<?php
2use PHPUnit\Framework\TestCase;
3 
4class MathTest extends TestCase
5{
6 public function testAddition()
7 {
8 $this->assertEquals(5, 2 + 3);
9 }
10}
  • TestCase est la classe de base pour tous les tests.
  • assertEquals() vérifie que le résultat obtenu correspond au résultat attendu.

Test d’une classe PHP

1<?php
2class Calculatrice
3{
4 public function addition($a, $b)
5 {
6 return $a + $b;
7 }
8}
9 
10use PHPUnit\Framework\TestCase;
11 
12class CalculatriceTest extends TestCase
13{
14 public function testAddition()
15 {
16 $calc = new Calculatrice();
17 $this->assertEquals(5, $calc->addition(2, 3));
18 }
19}

Test avec Laravel

Laravel intègre PHPUnit et propose des classes de test :

1<?php
2 
3namespace Tests\Feature;
4 
5use Tests\TestCase;
6 
7class HomePageTest extends TestCase
8{
9 public function testAccueilRetourne200()
10 {
11 $response = $this->get('/');
12 $response->assertStatus(200);
13 }
14}
  • Feature : tests fonctionnels pour les routes, contrôleurs et intégrations.
  • Unit : tests unitaires pour les classes et méthodes individuelles.

Assertions courantes

  • $this->assertTrue($condition); : vérifie que la condition est vraie.
  • $this->assertFalse($condition); : vérifie que la condition est fausse.
  • $this->assertEquals($attendu, $reel); : vérifie que deux valeurs sont égales.
  • $this->assertNull($variable); : vérifie que la variable est nulle.
  • $this->assertInstanceOf(Class::class, $objet); : vérifie le type d’un objet.

Bonnes pratiques

  • Écrire des tests petits et ciblés, testant une seule fonctionnalité à la fois.
  • Organiser les tests dans des dossiers Unit et Feature.
  • Utiliser des factories et seeders pour générer des données de test réalistes.
  • Exécuter régulièrement les tests pour détecter les régressions.
  • Compléter PHPUnit avec coverage reports pour analyser la couverture du code.

PHPUnit est un outil incontournable pour le développement PHP professionnel. Il garantit la qualité et la fiabilité du code, facilite le maintien de projets complexes et s’intègre parfaitement avec Laravel et l’écosystème PHP moderne.