Méthodes privées de tests unitaires C# : éviter les erreurs d'exécution
En C#, vous pouvez utiliser les classes d'accesseurs générées automatiquement par Visual Studio pour tester unitairement les méthodes privées. Cependant, des erreurs d'exécution peuvent survenir lorsque vous essayez de manipuler l'état interne de l'objet via ces tests.
Problème fondamental
L'erreur rencontrée dans le code fourni est due au fait que la cible de la classe d'accesseur est traitée comme TypeA_Accessor au moment de la compilation, mais traitée comme TypeA au moment de l'exécution. Cette incompatibilité entraîne l'échec de l'opération Add() sur target.myList car les types de liste sont différents.
Résolution des erreurs
Dans les versions antérieures à .NET Core 2.0, vous pouvez utiliser la classe PrivateObject pour accéder aux méthodes privées. Cela nécessite les étapes suivantes :
<code class="language-csharp">Class target = new Class(); PrivateObject obj = new PrivateObject(target); var retVal = obj.Invoke("PrivateMethod"); Assert.AreEqual(expectedVal, retVal);</code>
Méthodes alternatives
Au lieu de tester directement les méthodes privées, envisagez l'alternative suivante :
Veuillez noter que la prise en charge de PrivateObject et PrivateType a été supprimée dans .NET Core 2.0 et versions ultérieures, ce qui nécessite des méthodes alternatives pour accéder et tester les méthodes privées dans les versions plus récentes du framework.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!