0

我需要为 CI/CD 记录一个复杂的解决方案,其中一部分是为所有项目构建单元测试。我的 VS 解决方案包含 17 个项目。

在此处输入图像描述

这些项目中的每一个项目至少包含 10 个类,并且大多数类都充满了复杂的方法,有些项目有100 多个类。大多数项目都是控制台应用程序,但我们也有一个ASP MVC项目。

我知道我需要确定工作的优先级,但为了有效地完成工作,我需要为每个类提供完整的方法列表。

有谁知道任何适当的技术来做到这一点?我知道反思是可行的,但它会逐级进行,也可能需要很长时间。

4

2 回答 2

3

前段时间我写了简单的控制台应用程序。此代码自动从您的 .sln 中获取所有方法:

    static void Main(string[] args)
    {
        var rootPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName;
        var dlls = Directory.GetFiles(rootPath, "*.dll", SearchOption.AllDirectories).Where(row => row.Contains("\\bin\\")).Distinct();

        foreach (var dll in dlls)
        {
            var assembly = Assembly.LoadFrom(dll);
            var types = assembly.GetTypes();
            foreach (var type in types)
            {
                var members = type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.Static);
                foreach (MemberInfo member in members)
                {
                    Console.WriteLine($"{assembly.GetName().Name}.{type.Name}.{member.Name}");
                }

                var members2 = type.GetMethods(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.Static);
                foreach (MemberInfo member in members2)
                {
                    Console.WriteLine($"{assembly.GetName().Name}.{type.Name}.{member.Name}");
                }
            }
        }
    }

在此处输入图像描述

dlls - 您解决方案中的所有 dll 文件。类型 - dll 中的所有类。成员 - 所有方法。我希望这对你有帮助。

于 2019-07-26T15:19:55.100 回答
3

在每个项目属性的构建部分中,启用 XML 文档文件。构建所有项目,并从输出文件夹中收集输出 XML 文件。这将为您提供所有类及其方法、参数名称/类型等的列表。

在此处输入图像描述

于 2019-07-26T14:38:33.273 回答