csharp-nunit

Par github · awesome-copilot

Obtenez les meilleures pratiques pour les tests unitaires NUnit, y compris les tests pilotés par les données

npx skills add https://github.com/github/awesome-copilot --skill csharp-nunit

Meilleures pratiques NUnit

Votre objectif est de vous aider à écrire des tests unitaires efficaces avec NUnit, couvrant à la fois les approches de test standard et par données.

Configuration du projet

  • Utilisez un projet de test séparé avec la convention de nommage [ProjectName].Tests
  • Référencez les packages Microsoft.NET.Test.Sdk, NUnit et NUnit3TestAdapter
  • Créez des classes de test correspondant aux classes testées (par exemple, CalculatorTests pour Calculator)
  • Utilisez les commandes de test .NET SDK : dotnet test pour exécuter les tests

Structure des tests

  • Appliquez l'attribut [TestFixture] aux classes de test
  • Utilisez l'attribut [Test] pour les méthodes de test
  • Suivez le modèle Arrange-Act-Assert (AAA)
  • Nommez les tests selon le motif NomMethode_Scenario_ComportementAttendu
  • Utilisez [SetUp] et [TearDown] pour la configuration et le nettoyage par test
  • Utilisez [OneTimeSetUp] et [OneTimeTearDown] pour la configuration et le nettoyage par classe
  • Utilisez [SetUpFixture] pour la configuration et le nettoyage au niveau de l'assembly

Tests standards

  • Gardez les tests concentrés sur un seul comportement
  • Évitez de tester plusieurs comportements dans une seule méthode de test
  • Utilisez des assertions claires qui expriment l'intention
  • Incluez uniquement les assertions nécessaires pour vérifier le cas de test
  • Rendez les tests indépendants et idempotents (peuvent s'exécuter dans n'importe quel ordre)
  • Évitez les interdépendances entre tests

Tests par données

  • Utilisez [TestCase] pour les données de test en ligne
  • Utilisez [TestCaseSource] pour les données de test générées par programme
  • Utilisez [Values] pour les combinaisons de paramètres simples
  • Utilisez [ValueSource] pour les sources de données basées sur des propriétés ou des méthodes
  • Utilisez [Random] pour les valeurs de test numériques aléatoires
  • Utilisez [Range] pour les valeurs de test numériques séquentielles
  • Utilisez [Combinatorial] ou [Pairwise] pour combiner plusieurs paramètres

Assertions

  • Utilisez Assert.That avec le modèle de contrainte (style NUnit préféré)
  • Utilisez des contraintes comme Is.EqualTo, Is.SameAs, Contains.Item
  • Utilisez Assert.AreEqual pour l'égalité de valeur simple (style classique)
  • Utilisez CollectionAssert pour les comparaisons de collections
  • Utilisez StringAssert pour les assertions spécifiques aux chaînes
  • Utilisez Assert.Throws<T> ou Assert.ThrowsAsync<T> pour tester les exceptions
  • Utilisez des messages descriptifs dans les assertions pour clarifier les échecs

Mocking et isolation

  • Envisagez d'utiliser Moq ou NSubstitute aux côtés de NUnit
  • Simulez les dépendances pour isoler les unités testées
  • Utilisez des interfaces pour faciliter la simulation
  • Envisagez d'utiliser un conteneur DI pour les configurations de test complexes

Organisation des tests

  • Groupez les tests par fonctionnalité ou composant
  • Utilisez les catégories avec [Category("CategoryName")]
  • Utilisez [Order] pour contrôler l'ordre d'exécution des tests si nécessaire
  • Utilisez [Author("DeveloperName")] pour indiquer la propriété
  • Utilisez [Description] pour fournir des informations supplémentaires sur le test
  • Envisagez [Explicit] pour les tests qui ne doivent pas s'exécuter automatiquement
  • Utilisez [Ignore("Reason")] pour ignorer temporairement les tests

Skills similaires