C# 从visual studio 2013中提取测试用例

C# 从visual studio 2013中提取测试用例,c#,visual-studio-2013,C#,Visual Studio 2013,如何在不使用TFS的情况下将所有具有“TestClass”属性的类及其所有具有“TestMethods”属性的方法提取到外部文件(如.txt或excel类型)中?可能有一些工具,但下面是一个使用反射的简单实现: var assembly = Assembly.LoadFile("xxx.dll"); var testClasses = assembly.GetTypes() .Where(c => c.GetCustomAttribute<TestClassAttribut

如何在不使用TFS的情况下将所有具有“TestClass”属性的类及其所有具有“TestMethods”属性的方法提取到外部文件(如.txt或excel类型)中?

可能有一些工具,但下面是一个使用反射的简单实现:

var assembly = Assembly.LoadFile("xxx.dll");

var testClasses = assembly.GetTypes()
    .Where(c => c.GetCustomAttribute<TestClassAttribute>() != null);

foreach (var testClass in testClasses)
{
    Console.WriteLine("Found test class " + testClass.FullName);

    var testMethods = testClass.GetMethods().Where(m => m.GetCustomAttribute<TestMethodAttribute>() != null);
    foreach (var testMethod in testMethods)
    {
        Console.WriteLine("Found test method " + testMethod.Name);
    }
}
var assembly=assembly.LoadFile(“xxx.dll”);
var testClasses=assembly.GetTypes()
。其中(c=>c.GetCustomAttribute()!=null);
foreach(testClasses中的var testClass)
{
WriteLine(“找到的测试类”+testClass.FullName);
var testMethods=testClass.GetMethods()。其中(m=>m.GetCustomAttribute()!=null);
foreach(testMethods中的var testMethod)
{
WriteLine(“找到的测试方法”+testMethod.Name);
}
}

你的意思是单击某种菜单项还是执行自己编写的代码?我实际上不知道。你可以建议你知道的我不明白为什么要投反对票。这是一个有效的问题,我想提取所有测试类及其测试方法。怎么了?就是这样,我都不知道从哪里开始。我在谷歌上搜索了一下,但什么也没找到。你知道哪里没有努力吗?通过在某个问题有效时投否决票并假设提问者没有做任何努力来判断某人。3个搜索查询在2分钟内提供了我需要知道的所有信息。谢谢,如果我很快找不到任何工具,我会这样做
[TestMethod]
public void list__all_unit_tests()
{
    string sDLL = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
    string sFilePath = string.Format("{0:s}\\{1:s}.DLL", System.IO.Directory.GetCurrentDirectory(), sDLL);
    var assembly = System.Reflection.Assembly.LoadFile(sFilePath);

    var testClasses = assembly.GetTypes()
                .Where(m => m.GetCustomAttributes(typeof(TestClassAttribute),false)!=null);

    foreach (var testClass in testClasses)
    {
        var testMethods = testClass.GetMethods()
                .Where(m => m.GetCustomAttributes(typeof(TestMethodAttribute),true).Length !=0);

        foreach (var testMethod in testMethods)
        {
            Debug.Print(string.Format("class,{0:s}, method,{1:s} ", testClass.FullName , testMethod.Name));
        }
    }
}