====== Ressources ======
* https://zestedesavoir.com/tutoriels/274/les-tests-unitaires-en-java/
* https://codegym.cc/fr/groups/posts/fr.191.tests-unitaires-en-java-avec-junit
* https://www.machinet.net/tutorial-fr/java-unit-test-guide
===== A02 : Les tests (unitaires et d'intégration) =====
__Durée estimée__ : 4 heures
==== Objectif pédagogique ====
* Comprendre la différence entre tests unitaires, d’intégration, fonctionnels et de performance.
* Savoir écrire et exécuter des tests avec un framework (**en Java avec JUnit** / en PHP avec PHPUnit).
* Prendre conscience de l’importance de l’automatisation et des bonnes pratiques de validation.
===== =====
==== Contexte fil rouge : Bibliothèque numérique ====
Vous travaillez pour une startup qui développe une application de gestion de bibliothèque.
L’application doit permettre :
* La gestion d’un catalogue de livres.
* L’ajout et la suppression d’utilisateurs.
* La gestion des emprunts (règle : un utilisateur ne peut pas emprunter plus de 3 livres).
===== =====
Vous allez développer et tester progressivement ce projet.
- récupérer le projet sur gitea
Dans Netbeans :
- cloner le dépôt (https://delphine.thevenot@gitea.lyc-lecastel.fr/delphine.thevenot/2026TestsBibliotheque.git),
- créer votre branche -votre prénom- et **ne travailler que sur votre branche**
- commiter avec un commentaire précis sur votre branche uniquement
- Étudier les classes fournies (Livre, Utilisateur).
- exécuter les tests existants / être capable de les expliquer
- Compléter les méthodes manquantes (ex. calcul du prix TTC d’un livre, ajout d’un livre dans la liste d’un utilisateur).
===== =====
====== Les tests unitaires ======
- Écrire des **tests unitaires** avec JUnit pour :
- vérifier les méthodes de la classe Utilisateur
- Vérifier le calcul du prix TTC.
- Vérifier que l’ajout d’un livre à un utilisateur fonctionne.
- Ajouter au moins 2 tests supplémentaires par classe(y compris la classe Emprunt) pour couvrir des cas limites (ex. : emprunter plus de 3 livres, prix négatif, etc.).
- Exécuter les tests et corriger les bugs si nécessaire.
Travail validé par la présentation d'un test à la classe le **vendredi 26/09**
===== =====
====== Les tests d'intégration ======
Vous aller vérifier que plusieurs composants du système fonctionnent correctement ensemble.
Contrairement aux tests unitaires qui testent une seule classe/méthode, le test d’intégration vérifie la collaboration entre classes.
- Tester qu’un utilisateur peut emprunter un livre uniquement si :
* le livre n’est pas déjà emprunté
* l’utilisateur a moins de 3 emprunts
- Vérifier que l’état du livre(emprunté ou pas) et la liste des emprunts de l’utilisateur sont correctement mis à jour.