我有几个用 C# 编写的测试项目。我需要创建一个新应用程序(可以是控制台或 WPF 应用程序),它需要引用测试项目并动态找出所有测试方法名称。
到目前为止,我能够找出所有测试项目中的所有方法和属性名称,但我无法仅过滤掉测试方法名称。我希望能够使用 TestMethodAttribute 过滤掉测试方法,因为所有测试方法都有 [TestMethod] 属性。但是它不能正确地完成工作。这是代码的提取
MethodInfo[] methodInfos = typeof(CodedUITest2).GetMethods();
Array.Sort(methodInfos,
delegate(MethodInfo methodInfo1, MethodInfo methodInfo2)
{return methodInfo1.Name.CompareTo(methodInfo2.Name);});
foreach (MethodInfo mi in methodInfos)
{
object[] al = mi.GetCustomAttributes(typeof(Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute), false);
if (al != null)
Console.WriteLine(mi.Name);
}
程序的输出是 CodedUITestMethod3 Equals get_TestContext GetHashCode GetType set_TestContext ToString
所以如果我删除以下语句,结果是一样的。
对象[] al = mi.GetCustomAttributes(typeof(Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute), false); 如果 (al != null)
所以我的问题是在找到所有方法名称之后,如何过滤结果并只获取测试方法,在这个例子中,它应该只打印“CodedUITestMethod3”?