繁体   English   中英

C#查找解决方案中的所有测试

[英]C# Find all tests in a solution

是否有任何技术可用于在解决方案中找到注释为测试的所有测试( [TestMethod][Fact][Theory] ...)?

背景:我对这一切都很陌生,但试图制定持续的部署策略。 我想在发布过程中/之后在解决方案中查找并运行所有测试。 这些不是构建依赖单元测试,这些是端到端解决方案测试的一部分。

如果我的想法偏离了正确的轨道,请告诉我。

因此,如果您想要一个只使用TestAttribute收集方法的工具,Visual Studio就会内置它。它是Test Explorer,它检查解决方案中的程序集并根据属性挖掘出测试,然后让您运行它们。 它在VS的某些版本中可用(我使用Professional,它有它); 不过,我不确定究竟应该做些什么。

通常为此目的编写的应用程序是可行的。 但是,您可以自己扫描程序集以获取这些属性。 这里没有必要 - 正如我所说,这里有测试工具可以做到这一点,像VSTS这样的东西可以帮助你集成到部署过程中 - 但是既然你提到你是所有这一切的新手我会将它留在这里作为您将来可能需要或不需要使用的东西。 如果不出意外,您可以将其改编为其他内容。

基本上,您可以使用Reflection来获取程序集,类,方法等,并且可以获得装饰每个程序集的属性。 你这样做:

[TestClass]
public class AttributeFinder
{
    [TestMethod]
    public void MyTestMethod()
    {
        // Do something
    }

    public static void FindAttributes()
    {
        var assembly = Assembly.GetAssembly(typeof(AttributeFinder));
        var types = assembly.GetTypes();
        foreach (var t in types)
        {
            var typeAttr = t.GetCustomAttribute(typeof(TestClassAttribute));
            if (typeAttr != null)
            {
                // Your class has a TestClass attribute on it!
            }

            var methods = t.GetMethods();
            foreach (var m in methods)
            {
                var methodAttr = m.GetCustomAttribute(typeof(TestMethodAttribute));
                if (methodAttr != null) 
                {
                    // This method has the TestMethod attribute!
                }
            }
        }
    }
}

同样, 有些工具可以自动为您完成此操作 ,QHero为您提供了一些链接。 我在这里介绍的是很长的路要走,并且需要你编写自己的工具,这对那些东西来说是不必要的。 但是反射是一种方便的技术,这可能是有用的,比如,在测试工具之外生成一个报告,列出你的测试方法/类或其他东西。

你打算用什么技术? 不确定我理解您的请求但是如果您打算使用.NET Unit测试,可以在这里查看: https//docs.microsoft.com/en-us/visualstudio/test/getting-started-with-unit -testing

或者您也可以使用着名的NUnit, https: //stackoverflow.com/questions/43007761/how-to-run-nunit-tests-in-visual-studio-2017

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM