🧪 Labo 13.2C – Pratique de tests unitaires
Exercice 3 – Écrire des tests unitaires pour compléter la classe Statistiques
🛠️ Instructions
La classe Statistiques permet de travailler avec une collection de nombres entiers.
La classe vous sera fournie, mais certaines parties du code seront volontairement incomplètes ou erronées :
- certains constructeurs ne seront pas entièrement implémentés ;
- certaines méthodes seront incomplètes ;
- certaines validations seront absentes.
Votre travail consiste à appliquer une approche de développement dirigé par les tests (DDT / TDD).
Pour chaque fonctionnalité de la classe Statistiques, 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
Statistiques; - exécuter de nouveau les tests ;
- vérifier que tous les tests réussissent.
Description fonctionnelle
La classe Statistiques contient une collection de nombres entiers appelée ColNombres.
Elle permet notamment de :
- créer une collection vide ;
- créer une collection à partir d’une liste existante ;
- ajouter un nombre ;
- compter le nombre d’occurrences d’un nombre ;
- calculer la somme des nombres ;
- calculer la moyenne ;
- obtenir les nombres pairs.
Constructeur par défaut
Le constructeur par défaut doit initialiser une collection vide.
Comportement attendu
Après la création d’une instance avec le constructeur par défaut :
ColNombresne doit pas êtrenull;ColNombresdoit contenir0éléments.
Constructeur avec paramètres
Le constructeur avec paramètres doit permettre d’initialiser un objet Statistiques avec une collection de nombres entiers.
Exemple
List<int> nombres = new List<int>() { 2, 4, 6 };
Statistiques statistiques =
new Statistiques(nombres);
Comportement attendu
Après la création de cette instance :
ColNombresne doit pas êtrenull;ColNombresdoit contenir les valeurs2,4et6dans le même ordre.
Validation requise
Une exception de type ArgumentNullException doit être levée si la collection passée en paramètre est null.
Exemple de valeur invalide
null
Propriété Somme
La propriété Somme doit calculer le total des nombres contenus dans la collection.
Exemple
Statistiques statistiques =
new Statistiques(new List<int>() { 2, 4, 6 });
int resultat = statistiques.Somme();
Comportement attendu
La valeur retournée doit être :
12
Si la collection est vide, la méthode doit retourner :
0
Propriété Moyenne
La propriété Moyenne doit calculer la moyenne des nombres contenus dans la collection.
Exemple
Statistiques statistiques =
new Statistiques(new List<int>() { 10, 20, 30 });
decimal resultat = statistiques.Moyenne();
Comportement attendu
La valeur retournée doit être :
20
Si la collection est vide, la méthode doit retourner :
0
Propriété NombresPairs
La propriété NombresPairs doit retourner une nouvelle collection contenant uniquement les nombres pairs de ColNombres.
Exemple
Statistiques statistiques =
new Statistiques(new List<int>() { 1, 2, 3, 4, 5, 6 });
List<int> resultat = statistiques.NombresPairs();
Comportement attendu
La collection retournée doit contenir :
2
4
6
Si aucun nombre pair n’est présent, la méthode doit retourner une collection vide.
La méthode ne doit pas modifier la collection originale ColNombres.
Méthode Ajouter
La méthode Ajouter permet d’ajouter un nombre entier à la fin de la collection.
Exemple
Statistiques statistiques = new Statistiques();
statistiques.Ajouter(10);
Comportement attendu
Après l’appel de la méthode :
- la collection doit contenir le nombre ajouté ;
- le nombre doit être ajouté à la fin de la collection ;
- le nombre d’éléments doit augmenter de
1.
Validation requise
Une exception de type ArgumentOutOfRangeException doit être levée si le nombre à ajouter est négatif.
Exemple de valeur invalide
-1
Méthode NbOccurences
La méthode NbOccurences doit retourner le nombre de fois qu’un nombre apparaît dans la collection.
Exemple
Statistiques statistiques =
new Statistiques(new List<int>() { 2, 4, 2, 6, 2 });
int resultat = statistiques.NbOccurences(2);
Comportement attendu
La valeur retournée doit être :
3
Si le nombre n’existe pas dans la collection, la méthode doit retourner :
0