Leçon 5 / 20

Installer et configurer PHPUnit

8 min PHP 8 — architecture, tests et sécurité Gratuit

Objectif : Configurer PHPUnit pour PHP 8.3 et préparer l’organisation de la suite de tests du carnet de contacts.

Quand une modification du carnet fonctionne sur votre machine, cela ne garantit pas qu’elle n’a pas cassé un comportement déjà présent. Sans outil de test et sans organisation stable, les vérifications deviennent manuelles et difficiles à répéter. Vous allez installer PHPUnit et le configurer pour repérer les fichiers de test aux emplacements prévus par le projet.

Installer PHPUnit avec Composer

PHPUnit s’installe comme dépendance de développement : il est utile pendant la construction et la vérification du projet, mais n’a pas à être installé sur le serveur qui exécute le carnet en production. Pour cette leçon, choisissez PHPUnit 11, compatible avec PHP 8.3. Exécutez la commande depuis la racine du projet, là où Composer gère ses dépendances.

Terminal
composer require --dev phpunit/phpunit:^11
Résultat attendu
Composer ajoute PHPUnit aux dépendances de développement et installe l’exécutable dans vendor/bin/phpunit.

Composer conserve la contrainte de version et la version effectivement installée dans ses fichiers de dépendances. Gardez ces fichiers dans le dépôt de code : une autre personne ou un environnement d’intégration pourra ainsi reconstruire les mêmes dépendances. Vérifiez l’installation avec la commande suivante, toujours depuis la racine.

Terminal
vendor/bin/phpunit --version
Résultat attendu
PHPUnit 11.x.x

Déclarer la configuration et les répertoires

PHPUnit accepte les options en ligne de commande, mais un fichier XML à la racine permet de partager les mêmes réglages entre votre poste et les outils d’intégration. Créez phpunit.xml à la racine du projet, au même niveau que les répertoires src, tests et config. La configuration ci-dessous demande à PHPUnit de chercher les fichiers dont le nom se termine par Test.php dans les deux répertoires de tests déjà définis pour le carnet.

Texte
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php"
         colors="true"
         failOnRisky="true"
         failOnWarning="true"
         cacheDirectory=".phpunit.cache">
    <testsuites>
        <testsuite name="Carnet de contacts">
            <directory suffix="Test.php">tests/Unitaire</directory>
            <directory suffix="Test.php">tests/Fonctionnel</directory>
        </testsuite>
    </testsuites>
</phpunit>

Le fichier de démarrage charge l’autoloader créé par Composer avant que PHPUnit ne charge les classes nécessaires. Les deux entrées directory limitent la découverte aux répertoires autorisés : tests/Unitaire accueillera les vérifications isolées du service, tandis que tests/Fonctionnel accueillera les parcours qui traversent plusieurs composants. Les fichiers suivent une convention explicite, par exemple ContactServiceTest.php et CarnetFonctionnelTest.php.

Lancer la découverte des tests

Une fois le fichier XML enregistré, lancez PHPUnit sans option : il lit la configuration à la racine et inspecte les deux répertoires. À ce stade, les fichiers de test du projet peuvent ne pas encore contenir de cas reconnus ; la configuration prépare leur exécution, elle ne crée pas les vérifications à votre place. Un résultat indiquant qu’aucun test n’a été exécuté signifie donc que l’étape de configuration est en place, mais que les cas de test restent à écrire.

Terminal
vendor/bin/phpunit
Résultat attendu
PHPUnit lit phpunit.xml et découvre les fichiers *Test.php dans tests/Unitaire et tests/Fonctionnel.

La configuration utilise Composer pour le chargement des classes, mais elle ne change pas les signatures des composants du carnet ni les responsabilités déjà définies. La leçon précédente a établi l’assemblage explicite de PDO, du dépôt et du service ; vous allez maintenant préparer les fichiers de test qui vérifieront ces comportements. Dans la prochaine leçon, vous examinerez les règles métier du service de contacts.

À retenir

  • Installez PHPUnit 11 comme dépendance de développement avec Composer pour PHP 8.3.
  • Placez phpunit.xml à la racine et chargez l’autoloader Composer.
  • Configurez la découverte dans les répertoires de tests prévus par le projet.
  • Lancez la suite depuis la racine avec vendor/bin/phpunit.

Envie d'aller plus loin ?

Les cours Enovatic sont gratuits et le resteront. Si vous cherchez un accompagnement encadré, nos formations professionnelles sont animées par les mêmes formateurs.