🧪 Labo 13.2D – Pratique de tests unitaires
Exercice 4 – Écrire des tests unitaires pour compléter la classe RefugeChats
🛠️ Instructions
La classe RefugeChats représente une collection de chats.
Elle permet notamment :
- d’ajouter des chats ;
- de supprimer des chats ;
- de vérifier si un matricule existe ;
- de rechercher des chats selon leur âge.
La classe vous sera fournie, mais certaines parties du code seront volontairement incomplètes ou erronées :
- certaines validations pourraient être absentes ;
- certaines méthodes pourraient être incomplètes ;
- certaines fonctionnalités pourraient être mal implémentées.
Votre travail consiste à appliquer une approche de développement dirigé par les tests (DDT / TDD).
Pour chaque fonctionnalité de la classe RefugeChats, vous devez :
- écrire les tests unitaires correspondant au comportement attendu ;
- exécuter les tests ;
- identifier les erreurs ou les fonctionnalités manquantes ;
- compléter ou corriger la classe
RefugeChats; - exécuter de nouveau les tests ;
- vérifier que tous les tests réussissent.
Description fonctionnelle
La classe RefugeChats permet de gérer une collection de chats à l’aide de la propriété suivante :
ColChats: la liste des chats du refuge.
Constructeurs
La classe possède deux constructeurs :
RefugeChats refuge = new RefugeChats();
et
RefugeChats refuge = new RefugeChats(listeChats);
Comportement attendu
- le constructeur sans paramètre doit créer une liste vide ;
- le constructeur recevant une liste ne doit pas accepter une valeur
null.
Validation requise
Une exception de type ArgumentNullException doit être levée si la liste reçue est null.
Méthode MatriculeExiste
La méthode MatriculeExiste permet de vérifier si un chat avec ce matricule est déjà présent dans la collection.
Exemple
bool existe = refuge.MatriculeExiste("A123");
Comportement attendu
- retourne
truesi un chat avec ce matricule existe ; - retourne
falsesinon.
La comparaison doit ignorer :
- les espaces au début et à la fin ;
- La comparaison ne doit pas être sensible à la casse (pas de différences entre majuscules et minuscules).
Méthode Ajouter
La méthode Ajouter permet d’ajouter un chat à la collection.
Exemple
refuge.Ajouter(chat);
Validations requises
Une exception de type ArgumentNullException doit être levée si le chat est null.
Une exception de type InvalidOperationException doit être levée si un chat avec le même matricule existe déjà dans la collection.
Comportement attendu
Si le chat est valide :
- il doit être ajouté à la collection ;
- le nombre de chats doit augmenter.
Méthode Supprimer
La méthode Supprimer permet de supprimer un chat à une position donnée dans la collection.
Exemple
refuge.Supprimer(0);
Domaine de validité
L’index doit être compris entre :
0 et ColChats.Count - 1
Validation requise
Une exception de type ArgumentOutOfRangeException doit être levée si l’index est invalide.
Exemples de valeurs invalides
-1
ColChats.Count
Méthode ChatsSelonAge
La méthode ChatsSelonAge permet d’obtenir la liste des chats dont l’âge est supérieur à un âge donné.
Exemple
List<Chat> chats = refuge.ChatsSelonAge(5);
Comportement attendu
La méthode doit retourner :
- une nouvelle liste ;
- contenant uniquement les chats ayant un âge supérieur à l’âge spécifié.
Exemple
Si la collection contient :
| Nom | Âge |
|---|---|
| Minou | 2 |
| Félix | 7 |
| Milo | 10 |
L’appel suivant :
refuge.ChatsSelonAge(5);
doit retourner :
- Félix ;
- Milo.
Travail demandé
Créer une classe de tests unitaires permettant de valider :
- le constructeur sans paramètre ;
- le constructeur avec une liste valide ;
- le constructeur avec une liste
null; MatriculeExistelorsque le matricule existe ;MatriculeExistelorsque le matricule n’existe pas ;Ajouteravec un chat valide ;Ajouteravec un chatnull;Ajouteravec un matricule déjà existant ;Supprimeravec un index valide ;Supprimeravec un index négatif ;Supprimeravec un index trop grand ;ChatsSelonAgeavec des chats correspondants ;ChatsSelonAgesans résultat.