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 garantir que votre code fonctionne correctement et continue de fonctionner lorsque vous y apportez des modifications. Vous allez créer un fichier de test dédié qui vérifie les fonctionnalités essentielles de votre système de bibliothèque.

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

  • Book.cs : conservez votre classe Book avec Id, Title, Author, IsAvailable, ainsi que 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, ainsi que les méthodes GetAllBooks() et GetAllUsers().
  • LibraryTests.cs : voici 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 différents 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 les scénarios suivants :

  • 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 comme prévu
  • 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 qu’une recherche par auteur renvoie les bons livres

Chaque méthode de test doit renvoyer une valeur booléenne 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 suivant :

{TestName}: {PASS|FAIL}

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

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

Par exemple, si l’entrée est :

3

La sortie doit être :

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

Autre exemple avec les 5 tests :

5

La sortie doit ê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 leur isolation. Ainsi, l’état d’un test n’affectera pas celui d’un autre. Considérez chaque test comme une vérification autonome d’un comportement précis 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

Entraînez-vous par vous-même : Compilateur C# en ligne