Tests unitaires méthodes C# privées : défis et solutions
Les tests unitaires directs des méthodes privées en C# sont problématiques en raison de leur encapsulation. Bien que Visual Studio génère des classes d'accesseurs pour faciliter cela, des erreurs d'exécution, telles que des échecs de conversion d'objets lors de l'interaction avec des listes privées, peuvent se produire. Cela provient souvent de différences de type entre la classe accesseur et la classe cible.
Le problème :
Un scénario courant est l'échec d'un test unitaire lors de l'exécution en raison d'une erreur de conversion d'objet lors de la tentative d'ajout d'un élément à une liste privée. Le type de liste de la classe accesseur diffère du type de liste de la classe d'origine.
Résoudre le problème :
Approche obsolète : PrivateObject
Classe :
Dans les versions de .NET antérieures à .NET Core 2.0, la classe PrivateObject
offrait un moyen d'appeler des méthodes privées :
<code class="language-csharp">Class target = new Class(); PrivateObject obj = new PrivateObject(target); var retVal = obj.Invoke("PrivateMethod"); Assert.AreEqual(expectedVal, retVal);</code>
Important : PrivateObject
et PrivateType
ne sont plus pris en charge dans .NET Core 2.0 et versions ultérieures.
Meilleures alternatives :
Les meilleures pratiques découragent généralement les tests directs des méthodes privées. Voici pourquoi et quoi faire à la place :
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!