Tests unitaires pour les méthodes privée, interne et friend

En général, les méthodes marquées comme privée, interne et friend, ne sont pas visibles à l'extérieur de la classe qui contient ces méthodes. Toutefois, les outils Visual Studio fournissent des tests unitaires qui peuvent y accéder, même si le fichier de test unitaire est une classe séparée.

Bien qu'il ne soit pas nécessaire de modifier votre fichier de test unitaire pour autoriser ces méthodes, vous pouvez cependant effectuer quelques choix concernant le mode de traitement des méthodes interne et friend. Cet article décrit ces choix et explique ce qui se produit dans votre projet lorsque vous testez des méthodes privées, internes et friend.

Notes

Pour plus d'informations sur la création de tests unitaires, consultez Création et exécution des tests unitaires pour le code existant.

Notes

L'utilisation des accesseurs a été déconseillée dans Visual Studio 2010 et peut ne pas être incluse dans les versions ultérieures de Visual Studio.

Méthodes privées

Lorsque vous créez un test unitaire pour une méthode privée, un dossier Références de test est ajouté à votre projet de test et un accesseur est ajouté à ce dossier. L'accesseur est également référencé dans la logique de la méthode de test unitaire.

Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value
Dim target As Form1_Accessor = New Form1_Accessor() ' TODO: Initialize to an appropriate value

Cet accesseur permet à votre test unitaire d'appeler des méthodes privées dans le code que vous testez.

Vous pouvez créer un accesseur manuellement ou recréer un accesseur qui a été supprimé. Pour cela, cliquez avec le bouton droit sur le code que vous testez, pointez sur Créer un accesseur private, puis sélectionnez le projet de test qui requiert l'accesseur.

Méthodes internes ou friend

Lorsque vous créez un test unitaire en langage C# pour une méthode interne ou pour une méthode friend dans Microsoft Visual Basic, une boîte de dialogue s'affiche dans laquelle vous pouvez indiquer si l'accès à vos méthodes internes doit s'effectuer avec l'accesseur private ou avec l'attribut InternalsVisibleToAttribute.

Notes

Cette boîte de dialogue peut ne se pas afficher si l'attribut a déjà été ajouté à votre projet.

Si vous choisissez l'attribut InternalsVisibleToAttribute pour l'accès à vos méthodes internes, celui-ci est ajouté au fichier AssemblyInfo.cs. Grâce à cet attribut, les méthodes internes figurant dans le code que vous testez sont accessibles au projet de test. Un nouvel attribut est ajouté pour chaque projet de test pour lequel vous choisissez cette option.

Si vous choisissez l'accesseur private pour l'accès à vos méthodes internes, vous constatez le même comportement que celui décrit plus haut dans cet article pour les méthodes privées : un dossier Références de test est ajouté à votre projet de test, un accesseur est ajouté à ce dossier, et cet accesseur est référencé dans la logique de la méthode de test unitaire. Dans ce cas, l'accesseur private fournit à la fois l'accès aux méthodes internes et privées que vous testez.

Si vous avez choisi d'ajouter l'attribut InternalsVisibleToAttribute à votre projet, vous pouvez toujours créer des tests unitaires pour les méthodes internes et choisir l'accesseur private pour leur accès. Toutefois, vous devez effectuer cette opération lors de la création du test unitaire. Dans la boîte de dialogue Créer des tests unitaires, cliquez sur Paramètres. Dans la boîte de dialogue Paramètres de génération des tests, désactivez la case à cocher Honorer l'attribut InternalsVisibleTo.

Voir aussi

Concepts

Anatomie d'un test unitaire

Tests unitaires et C++

Tests unitaires pour les méthodes génériques