Tests C# pour débutants : par où commencer en 2024

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi les tests C# ne sont pas effrayants, mais rentables ?

\n\n

Si vous débutez tout juste en C# et avez entendu dire qu'« un bon développeur écrit toujours des tests », mais n'avez aucune idée par où aborder cette bête — vous êtes au bon endroit. Tester du code effraie souvent les débutants : cela semble complexe, nécessitant des connaissances approfondies en architecture et des tonnes de configurations. En réalité, écrire des tests en C# est une compétence que l'on peut maîtriser en une soirée, et dont les bénéfices dureront des années.

\n\n

Imaginez que vous ayez assemblé un mécanisme complexe avec des milliers de pièces. Vous ne le mettriez pas en marche à pleine puissance sans vérifier chaque composant, n'est-ce pas ? Il en va de même pour un programme : les tests unitaires C# permettent de vérifier chaque « rouage » de votre code individuellement, sans attendre que tout le système s'effondre en production. Dans cet article, nous aborderons les tests C# à partir de zéro : du choix du framework à l'écriture de votre premier test significatif. C'est parti !

\n\n

Par où commencer les tests en C# : préparation de l'environnement

\n\n

Avant d'écrire du code, assurons-nous que vous avez tout le nécessaire. Pour tester en C#, vous aurez besoin de :

\n
    \n
  • Visual Studio 2022 (édition Community — gratuite) ou JetBrains Rider (si vous avez une licence).
  • \n
  • .NET SDK (version 6, 7 ou 8 — n'importe quelle LTS convient).
  • \n
  • Une compréhension de base de la POO en C# : classes, méthodes, interfaces.
  • \n
\n\n

Une fois l'environnement prêt, créez un nouveau projet. Je recommande de séparer immédiatement le code en deux projets : le projet principal (votre bibliothèque ou application) et le projet de test. Dans Visual Studio, cela se fait avec la commande : File → New → Project → xUnit Test Project (.NET Core) ou NUnit Test Project. Mais nous irons un peu plus loin et examinerons les deux outils populaires.

\n\n

Choisir un framework : NUnit vs xUnit

\n\n

Dans le monde C#, il y a deux principaux « acteurs » pour écrire des tests unitaires : NUnit et xUnit. Les deux fonctionnent très bien, mais il y a des nuances :

\n\n
    \n
  • NUnit — un classique venu de Java (équivalent de JUnit). Il utilise les attributs [Test], [SetUp], [TearDown]. Très visuel pour les débutants.
  • \n
  • xUnit — un framework moderne créé par les développeurs d'ASP.NET. Il utilise [Fact] et [Theory]. Considéré comme plus « propre » et mieux intégré avec .NET Core.
  • \n
\n\n

Pour les débutants, je conseille xUnit — il est plus simple, ne nécessite pas d'attributs superflus, et est plus facile à comprendre. Mais si votre équipe utilise NUnit — pas de problème, nous aborderons les deux options.

\n\n

Premier test unitaire en C# : écrire du code

\n\n

Supposons que nous ayons une simple classe calculatrice :

\n\n
public class Calculator\n{\n    public int Add(int a, int b) => a + b;\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\n

Écrivons maintenant des tests pour cette classe. Créez un projet de test (xUnit) et ajoutez une référence au projet principal.

\n\n

Exemple de test avec xUnit

\n\n
using Xunit;\n\npublic class CalculatorTests\n{\n    [Fact]\n    public void Add_ShouldReturnSum_WhenTwoNumbers()\n    {\n        // Arrange\n        var calculator = new Calculator();\n        \n        // Act\n        var result = calculator.Add(3, 5);\n        \n        // Assert\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

Remarquez la structure Arrange-Act-Assert (AAA). C'est le standard en or pour écrire des tests : d'abord préparer les données, puis exécuter l'action, ensuite vérifier le résultat. Retenez ce modèle — il vous sauvera du chaos

Blogs

Book Recommendations