Tests en C# (.NET) : aperçu complet des frameworks et outils

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

Tests en C# (.NET) : frameworks et outils



Les tests sont une partie essentielle du développement professionnel sur la plateforme .NET. Une couverture de code de qualité par des tests réduit le nombre de bogues, simplifie le refactoring et renforce la confiance dans le produit. Dans l'écosystème C#, il existe de nombreux frameworks et utilitaires matures, chacun résolvant des tâches spécifiques : des tests unitaires aux vérifications d'intégration et aux tests d'interface utilisateur. Dans cet article, nous allons passer en revue les principaux outils, leurs fonctionnalités et des exemples d'utilisation.



Frameworks principaux pour les tests unitaires



Les tests unitaires sont la base de la pyramide des tests. Dans .NET Core / .NET 5+, le standard de facto est devenu xUnit.net, bien que NUnit et MSTest soient également activement utilisés.



xUnit.net

Framework moderne, flexible et le plus populaire. Il fonctionne selon le principe des "faits" (facts) et des "théories" (theories).

  • Faits (Fact) — tests simples sans paramètres.
  • Théories (Theory) — tests paramétrés avec des données provenant des attributs [InlineData] ou [MemberData].
  • Ne nécessite pas l'attribut [TestClass] — toute classe publique peut contenir des tests.
using Xunit;

public class CalculatorTests{ [Fact] public void Add_ShouldReturnSum() { // Arrange var calc = new Calculator(); // Act var result = calc.Add(2, 3); // Assert Assert.Equal(5, result); }

[Theory] [InlineData(1, 2, 3)] [InlineData(-1, -1, -2)] public void Add_WithMultipleInputs_ShouldReturnCorrectSum(int a, int b, int expected) { var calc = new Calculator(); var result = calc.Add(a, b); Assert.Equal(expected, result); }}


NUnit

Framework classique avec une riche histoire. Il se distingue par des attributs puissants et la prise en charge de la paramétrisation.

  • Utilise les attributs [Test], [TestCase], [SetUp].
  • Prend en charge l'exécution parallèle des tests.
  • Pratique pour les scénarios complexes avec des données de test.
using NUnit.Framework;

[TestFixture]public class CalculatorNUnitTests{ [Test] public void Subtract_ShouldReturnDifference() { var calc = new Calculator(); var result = calc.Subtract(10, 4); Assert.That(result, Is.EqualTo(6)); }

[TestCase(5, 3, 2)] [TestCase(0, 0, 0)] public void Subtract_WithParameters_ShouldReturnCorrect(int a, int b, int expected) { var calc = new Calculator(); Assert.That(calc.Subtract(a, b), Is.EqualTo(expected)); }}


MSTest

Framework intégré de Microsoft. Idéal pour les projets simples et les équipes travaillant dans l'écosystème Visual Studio.

  • Attributs : [TestMethod], [TestClass], [DataRow].
  • Intégration étroite avec Azure DevOps et les pipelines CI/CD.
using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]public class CalculatorMSTests{ [TestMethod] public void Multiply_ShouldReturnProduct() { var calc = new Calculator(); var result = calc.Multiply(4, 5); Assert.AreEqual(20, result); }

[DataRow(2, 3, 6)] [DataRow(0, 100, 0)] [DataTestMethod] public void Multiply_WithDataRows_ShouldReturnCorrect(int a, int b, int expected) { var calc = new Calculator(); Assert.AreEqual(expected, calc.Multiply(a, b)); }}


Bibliothèques pour objets mock et isolation

Lors des tests unitaires, il est souvent nécessaire d'isoler le code testé des dépendances externes (BDD, API, système de fichiers). Pour cela, on utilise des frameworks de mock.



Moq

Le framework le plus populaire

Recommendations