J'ai récemment mis à niveau un projet C# de .NET 3.5 vers .NET 4. J'ai une méthode qui extrait toutes les méthodes de test MSTest d'une liste donnée d'instances MethodBase
. Son corps ressemble à ceci:changements d'attributs personnalisés dans .NET 4
return null == methods || methods.Count() == 0
? null
: from method in methods
let testAttribute = Attribute.GetCustomAttribute(method,
typeof(TestMethodAttribute))
where null != testAttribute
select method;
Cela a fonctionné dans .NET 3.5, mais depuis la mise à niveau mes projets à .NET 4, ce code renvoie toujours une liste vide, même donné une liste des méthodes contenant une méthode qui est marqué avec [TestMethod]
. Est-ce que quelque chose a changé avec les attributs personnalisés dans .NET 4?
Debugging, je trouve que les résultats de GetCustomAttributesData()
sur la méthode d'essai donne une liste de deux CustomAttributeData
qui sont décrites en 2010 Visual Studio fenêtre des sections locales 'est comme:
Microsoft.VisualStudio.TestTools.UnitTesting.DeploymentItemAttribute("myDLL.dll")
Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute()
- ce est ce que je cherche
Quand j'appelle GetType()
sur cette seconde cependant, par exemple CustomAttributeData
, je reçoisdix . Comment puis-je obtenir TestMethodAttribute
sur le CustomAttributeData
, afin que je puisse extraire des méthodes de test à partir d'une liste de MethodBase
s?
Oui, et j'ai essayé de passer 'true' afin qu'il vérifie aussi les ancêtres. Je récupère toujours un tableau vide de 'object's. –
@Sarah: Dans ce cas, veuillez poster un programme court mais complet démontrant le problème. J'ai montré un exemple qui * fonctionne *. –
fausse alarme! Mon projet faisait référence à l'ancienne version .NET 3.5/VS 2008 de la bibliothèque UnitTestFramework. Passer à la version .NET 4/VS 2010 de UnitTestFramework (10.0.0.0) a résolu le problème. –