Qu'est-ce que cette bibliothèque et à quoi sert-elle
\n\nxUnit et NUnit sont les deux bibliothèques les plus populaires pour les tests unitaires (unit testing) dans l'écosystème .NET (C#, F#, VB.NET). Elles permettent aux développeurs d'écrire des tests automatiques qui vérifient le bon fonctionnement de modules individuels du programme (classes, méthodes, fonctions).
\n\nPourquoi est-ce nécessaire ?
\n- \n
- Détection précoce des erreurs : Les tests sont exécutés après chaque modification du code, ce qui permet d'identifier immédiatement les régressions (lorsque du nouveau code casse une fonctionnalité existante). \n
- Refactorisation sans crainte : Vous pouvez réécrire le code en toute confiance si vous êtes sûr que les tests le couvrent. Si les tests réussissent, tout fonctionne comme avant. \n
- Documentation en action : Les tests montrent comment une méthode doit être utilisée, quels paramètres elle accepte et ce qu'elle retourne. \n
- Intégration CI/CD : Les tests sont automatiquement exécutés sur les serveurs de build (GitHub Actions, Azure DevOps, Jenkins) avant le déploiement. \n
Différence entre xUnit et NUnit :
\n- \n
- NUnit — une bibliothèque plus ancienne (port de Java JUnit), utilise les attributs
[Test],[SetUp],[TearDown]. Dispose d'un riche ensemble d'attributs pour la paramétrisation. \n - xUnit — une bibliothèque plus moderne, créée par l'auteur de NUnit. Utilise l'attribut
[Fact]pour les tests standards et[Theory]pour les tests paramétrés. Se distingue par une approche plus stricte de l'isolation des tests (chaque test est une nouvelle instance de classe). \n
Dans cet article, nous examinerons les deux bibliothèques, mais nous mettrons l'accent sur xUnit, car elle est recommandée par Microsoft pour les nouveaux projets.
\n\nInstallation
\n\nL'installation se fait via le gestionnaire de paquets NuGet. Vous pouvez utiliser la console du gestionnaire de paquets (Package Manager Console) ou .NET CLI.
\n\nInstallation de xUnit
\n// Via .NET CLI\ndotnet add package xunit\ndotnet add package xunit.runner.visualstudio\n\n// Via Package Manager Console\nInstall-Package xunit\nInstall-Package xunit.runner.visualstudio\n\nInstallation de NUnit
\n// Via .NET CLI\ndotnet add package NUnit\ndotnet add package NUnit3TestAdapter\n\n// Via Package Manager Console\nInstall-Package NUnit\nInstall-Package NUnit3TestAdapter\n\nImportant : Pour exécuter les tests dans Visual Studio ou Rider, vous devez également installer l'adaptateur du test runner (par exemple, xunit.runner.visualstudio ou NUnit3TestAdapter).
Démarrage rapide avec un exemple de code
\n\nSupposons que nous ayons une classe simple Calculator avec une méthode Add. Écrivons des tests pour elle avec xUnit et NUnit.
Classe à tester (Calculator.cs)
\npublic class Calculator\n{\n public int Add(int a, int b)\n {\n return a + b;\n }\n\n public int Divide(int a, int b)\n {\n if (b == 0)\n throw new DivideByZeroException("Division par zéro impossible !");\n return a / b;\n }\n}\n\nTest avec xUnit (CalculatorTests.cs)
\nusing Xunit;\n\npublic class CalculatorTests\n{\n [Fact]\n public void Add_ShouldReturnSum_WhenTwoPositiveNumbers()\n {\n // Arrange (Préparation)\n var calculator = new Calculator();\n int a = 5;\n int b = 3;\n\n // Act (Action)\n int result = calculator.Add(a, b);\n\n // Assert (Vérification)\n Assert.Equal(8, result);\n }\n\n [Fact]\n public void Divide_ShouldThrowException_WhenDivideByZero()\n {\n var calculator = new Calculator();\n\n Assert.Throws<DivideByZeroException>(() => calculator.Divide(10, 0));\n }\n}\n\n