【问题标题】:C# Find all tests in a solutionC# 查找解决方案中的所有测试
【发布时间】:2017-08-29 15:12:26
【问题描述】:

我是否可以使用任何技术来查找解决方案中注释为测试的所有测试([TestMethod][Fact][Theory]...)?

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

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

【问题讨论】:

标签: c# testing automated-tests continuous-deployment


【解决方案1】:

因此,如果您想要一个仅使用 TestAttribute 收集方法的工具,Visual Studio 内置了该工具。它是测试资源管理器,它检查您的解决方案中的程序集并根据属性挖掘出测试,然后让您运行它们.它在某些版本的 VS 中可用(我使用 Professional,它有);不过,我不确定到底是哪些。

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

基本上,您可以使用反射来获取您的程序集、类、方法等,并且您可以获取装饰它们的属性。你会这样做:

[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 为您提供了一些链接。我在这里介绍的是很长的路要走,并且需要您编写自己的工具,这对于现有的东西来说是不必要的。但是反射是一种方便的技术,它可能对生成测试工具之外的报告(列出您的测试方法/类或其他内容)很有用。

【讨论】:

  • 赞成,你的答案很清楚(比我的更清楚),我认为这对 Pish 很有帮助,因为我们真的不知道在寻找什么 :) 不确定我们是否必须标记问题顺便说一句.
  • 这正是我想要的,谢谢。我仍处于了解这一点的早期阶段。 VSTS 是我前进的方向。我认为这将是一段漫长而有趣的旅程。谢谢
【解决方案2】:

你打算使用什么样的技术?不确定我是否非常理解您的要求,但如果您打算使用 .NET 单元测试,您可以在这里查看: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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    相关资源
    最近更新 更多