如何动态查找所有测试方法(编码的UI)



我有几个用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);
        }

程序的输出为编码的UI测试方法3Equals获取测试上下文方法GetTypeset_TestContextToString

因此,如果我删除以下语句,结果是一样的。

object[]al=mi.GetCustomAttributes(typeof(Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute),false);如果(al!=空)

所以我的问题是,在找到所有方法名称后,如何过滤结果并只获得测试方法,在这个例子中,它应该只打印"CodedUITestMethod3"?

以下代码适用于我的盒子

Type type = typeof(CodedUITest2);
IEnumerable<MethodInfo> testMethods = type.GetMethods(BindingFlags.Instance | BindingFlags.Public).Where(m => m.IsDefined(typeof(TestMethodAttribute)));

在MSDN站点上,我发现了对VSTest.Console.exe命令行选项的以下部分的引用。也许这会有所帮助?

http://msdn.microsoft.com/en-us/library/jj155796.aspx

/ListTests:[文件名]列出给定测试容器中发现的测试。

相关内容

  • 没有找到相关文章

最新更新