TECHNOLOGIES
PHPUnit, notre framework de tests
PHPUnit est le standard de tests unitaires et fonctionnels pour PHP. Intégré nativement dans Symfony, il couvre la totalité de nos besoins : tests unitaires isolés, tests fonctionnels avec container Symfony et tests de controllers HTTP via WebTestCase.
Cette fiche documente nos conventions internes, nos patterns et notre configuration CI/CD.
POURQUOI PHPUNIT
Ce qui en fait notre outil de tests de référence
PHPUnit s'est imposé dans tous nos projets Symfony. Voici les fonctionnalités que nous utilisons le plus et pourquoi elles font la différence.
Standard de facto PHP
PHPUnit est le framework de tests le plus utilisé dans l'écosystème PHP. Intégration native avec Symfony, support Composer, documentation exhaustive et communauté mondiale active.
Assertions expressives
Des centaines d'assertions couvrant tous les cas : égalité stricte, exceptions attendues, structure JSON, format de chaînes, contenu de tableaux. Chaque échec produit un message clair et actionnable.
Data Providers
Tester un comportement sur N jeux de données sans dupliquer le code. L'attribut #[DataProvider] de PHPUnit 10+ rend les cas de test lisibles, nommés et maintenables.
Mocking natif
Isolation parfaite grâce aux MockObjects intégrés. Stubber un repository, simuler une API externe, vérifier qu'une méthode est appelée avec les bons arguments — sans dépendance externe.
Code Coverage intégré
Mesure de couverture HTML, Clover ou Cobertura sans outil séparé. Rapport GitLab CI compatible via le format Cobertura pour visualiser la couverture directement dans les Merge Requests.
Intégration Symfony native
KernelTestCase et WebTestCase fournis par symfony/test-pack donnent accès au container de services, à la base de données de test et à un client HTTP pour tester les controllers sans serveur.
NOTRE USAGE
Comment nous utilisons PHPUnit chez SmartBooster
PHPUnit structure toute notre stratégie de tests. Voici les quatre axes sur lesquels nous l'utilisons systématiquement sur chaque projet Symfony.
Tests unitaires sur les objets métier
Nous testons toutes les formules de calculs, les logiques métier : formattage, nettoyage, transformation, règles de validation...
Tests de services plus complexe
Nous testons les requêtes complexes avec chargement de données avec Dama ou utilisons des Mocks.
Pipeline GitLab CI
Les tests s'exécutent sur chaque push. Si un test échoue alors il nous ait impossible de déployer.