Cours : Exceptions, Tests unitaires, Couverture des tests, PHP Unit
try, catch et Exception
En PHP si l'on veut pouvoir capter les potentielles erreurs du code pour y réagir, on utilise les try, les catch et les Exceptions.
Dans sa version la plus simple, le bloc try tente d'exécuter un bout de code, si une erreur survient, c'est catch qui l'attrape au vol et permet, par exemple d'afficher le message d'erreur :
Si dans le cadre de votre gestion d'erreurs vous avez besoin de signaler une erreur vous pouvez throw une Exception :
Les types de tests
Les tests unitaires
L'idée est simple : un test unitaire s'occupe de tester une unité du code. En POO : une classe => un test unitaire de cette classe.
Le test va vérifier que tous les cas se déroulent comme attendu. Constructeurs, Getters, Setters, etc. La classe doit faire son travail quand tout va bien et lever la bonne Exception quand quelque chose lui déplait.
En PHP, la librairie qui permet de réaliser des tests unitaires s'appelle PHPUnit.
Les tests structurels
Un test structurel par contre test en niveau plus macro, il va tester une fonctionnalité entière, toujours côté code, mais il va tester chaque étape pour statuer à la fin si chacune de ses étapes fonctionne et si ces étapes fonctionnent entre elles.
Les tests fonctionnels
Les tests fonctionnels eux se placent plutôt du côté de l'utilisateur, on rédige un scénario de comment les choses devraient se passer, et on vérifie que tout se passe comme prévu, à la fois les cas de succès et les cas d'erreurs.
Behat, la principale technologie de tests fonctionnels a une implémentation PHP.
La couverture des tests
La couverture des tests c'est la portion des blocs de votre code qui sont couverts par vos tests. On divise le code en portion, et lorsque cette portion est intégralement parcourue par les tests on considère qu'elle est couverte.
Si je ne teste qu'avec
2025=> je ne couvre que leifSi je ne teste qu'avec
2026=> je ne couvre que leelse ifSi je ne teste qu'avec
2024=> je ne couvre que leelse
Un test qui essaierai à la fois 2025, 2026 et 2023 permettrait théoriquement une couverture de 100%.
PHP Unit
PHPUnit est une librairie permettant de réaliser des test unitaires en PHP.
Vous pouvez l'installer via composer :
Vous devrez créer deux dossiers : src qui contiendra vos sources et tests qui contiendra vos tests.
Votre composer.json devrait ressembler à ça :
Pour lancer les tests :