Menu
Coddy logo textTech

Tests unitaires (NUnit/xUnit)

Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy — leçon 67 sur 70.

challenge icon

Défi

Facile

Terminons votre projet de système de bibliothèque en ajoutant des tests unitaires ! Les tests sont essentiels pour s'assurer que votre code fonctionne correctement et continue de fonctionner au fur et à mesure que vous apportez des modifications. Vous allez créer un fichier de test dédié qui vérifie les fonctionnalités de base de votre système de bibliothèque.

Vous continuerez à travailler avec la structure de votre projet existant, en ajoutant un nouveau fichier de test :

  • Book.cs : Conservez votre classe Book avec Id, Title, Author, IsAvailable, et les méthodes Borrow() et Return().
  • User.cs : Conservez votre classe User avec le suivi des emprunts, la constante MaxBooks, CanBorrow(), et les méthodes de gestion des livres empruntés.
  • Library.cs : Conservez votre classe Library avec la logique d'emprunt, les méthodes de recherche, et les méthodes GetAllBooks() et GetAllUsers().
  • LibraryTests.cs : C'est votre nouveau fichier de test ! Créez une classe de test qui vérifie que votre système de bibliothèque fonctionne correctement. Vous écrirez des méthodes de test qui vérifient divers scénarios et indiquent si chaque test réussit ou échoue.
  • Program.cs : Votre point d'entrée qui exécute les tests et affiche les résultats.

Votre classe de test doit inclure des méthodes qui testent ces scénarios :

  • TestBookBorrow - Vérifier que l'emprunt d'un livre disponible réussit et modifie sa disponibilité
  • TestBookBorrowUnavailable - Vérifier que l'emprunt d'un livre déjà emprunté échoue de manière appropriée
  • TestUserBorrowingLimit - Vérifier que les utilisateurs ne peuvent pas emprunter plus de 3 livres
  • TestBookReturn - Vérifier que le retour d'un livre emprunté fonctionne correctement
  • TestSearchByAuthor - Vérifier que la recherche par auteur renvoie les bons livres

Chaque méthode de test doit retourner un booléen indiquant si le test a réussi. Créez un exécuteur de tests simple qui exécute tous les tests et affiche les résultats.

Vous recevrez les entrées suivantes :

  • Nombre de scénarios de test à exécuter (1-5, correspondant aux tests listés ci-dessus)

Pour chaque test exécuté, affichez le résultat au format :

{TestName}: {PASS|FAIL}

Une fois tous les tests terminés, affichez un résumé :

--- Test Summary ---
Passed: {count}
Failed: {count}
Total: {count}

Par exemple, si l'entrée est :

3

La sortie devrait être :

TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
--- Test Summary ---
Passed: 3
Failed: 0
Total: 3

Un autre exemple avec les 5 tests :

5

La sortie devrait être :

TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
TestBookReturn: PASS
TestSearchByAuthor: PASS
--- Test Summary ---
Passed: 5
Failed: 0
Total: 5

Vos tests doivent créer de nouvelles instances de Book, User, et Library pour chaque test afin de garantir l'isolation. De cette façon, l'état d'un test n'affecte pas un autre. Considérez chaque test comme une vérification autonome d'un comportement spécifique de votre système !

Essayez vous-même

using System;
using Library.Tests;

class Program
{
    public static void Main(string[] args)
    {
        // TODO: Créer une instance de BorrowingServiceTests
        
        // TODO: Exécuter chaque méthode de test, en imprimant le nom du test avant chaque résultat
        // Exemple:
        // Console.WriteLine("BorrowBook_WhenBookAvailable_ReturnsTrue");
        // tests.BorrowBook_WhenBookAvailable_ReturnsTrue();
        
    }
}

Toutes les leçons de Programmation Orientée Objet