Étant donné que les API utilisées pour écrire les règles personnalisées sont à peu près aussi bien documentés et pris en charge que ceux nécessaires pour les tests unitaires - et sont restés la même chose entre 1,36 (pour CLR2) et 10,0 (pour CLR4) - il est probablement utile de noter le contour du processus pour obtenir un objet Microsoft.FxCop.Sdk.Method
, qui peut être effectué en utilisant uniquement les types et méthodes déclarés public
dans les assemblages FxCop (pas de ruse de réflexion) Champs obligatoires).
Commencez par le Type
de l'objet pour lequel vous voulez Microsoft.FxCop.Sdk.Method
, appelez cela t
. Obtenez le AssemblyNode
pour l'assemblage contenant t
via le point d'entrée statique
assembly = AssemblyNode.GetAssembly(t.Module.Assembly.Location)
Obtenez le FxCop TypeNode
correspondant à t
via
assembly.GetType(Identifier.For(t.Namespace), Identifier.For(t.Name))
Ensuite, la recherche dans le champ de Members
TypeNode
pour trouver celui où member.Name.Name
est le nom de la méthode que vous cherchiez. Étant donné qu'il s'agit d'un test unitaire, vous devriez pouvoir faire en sorte que la méthode fictive examinée ne soit pas surchargée. Puis, appelez le MyRule.Check(member)
pour effectuer le test; cela retourne la collection d'objets Problem
, qui peuvent être inspectés pour affirmer qu'il contient les résultats attendus et seulement les résultats attendus.
ah, c'est vraiment ennuyeux cela deviendra plus difficile de faire des tests unitaires – Tim