C#在解决方案中查找所有测试
我是否可以使用任何技术来查找解决方案中注释为测试的所有测试(C#在解决方案中查找所有测试,c#,testing,automated-tests,continuous-deployment,C#,Testing,Automated Tests,Continuous Deployment,我是否可以使用任何技术来查找解决方案中注释为测试的所有测试([TestMethod],[Fact],[Theory]) 背景: 我对这一切都很陌生,但我正试图制定一个持续部署战略。我希望在发布过程中/之后查找并运行解决方案中的所有测试。 这些不是依赖于构建的单元测试,而是端到端解决方案测试的一部分 请告诉我我的想法是否偏离了正确的轨道。您将使用哪种技术?我不太清楚您的要求,但如果您计划使用.NET单元测试,可以在此处查看: 或者您也可以使用著名的NUnit,因此,如果您想要一个只收集带有Test
[TestMethod]
,[Fact]
,[Theory]
)
背景:
我对这一切都很陌生,但我正试图制定一个持续部署战略。我希望在发布过程中/之后查找并运行解决方案中的所有测试。
这些不是依赖于构建的单元测试,而是端到端解决方案测试的一部分
请告诉我我的想法是否偏离了正确的轨道。您将使用哪种技术?我不太清楚您的要求,但如果您计划使用.NET单元测试,可以在此处查看:
或者您也可以使用著名的NUnit,因此,如果您想要一个只收集带有TestAttribute的方法的工具,VisualStudio内置了这个工具。它是测试资源管理器,它检查解决方案中的程序集,并根据属性挖掘测试,然后让您运行它们。它在VS的一些版本中可用(我使用Professional,它有);不过,我不确定到底是哪一种 通常,为这个目的编写的应用程序才是最好的选择。但是,您可以自己扫描程序集以查找这些属性。这里其实没有必要——正如我所说,这里有一些测试工具可以做到这一点,像VST这样的东西可以帮助您集成到部署过程中——但是既然您提到您对所有这些都是新手,我就把它作为您将来可能需要或不需要使用的东西留在这里。如果没有别的东西,你可以把它改成别的东西 基本上,您可以使用反射来获取程序集、类、方法等,并且可以获取装饰它们的属性。你会这样做:
[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为您提供了一些链接。我在这里介绍的是一个漫长的过程,需要您编写自己的工具,而这对于那些东西来说是不必要的。但是,反射是一种很方便的技术,它可能有助于(比如)在测试工具之外生成一个报告,列出您的测试方法/类或其他内容。Upvoted,您的答案很清楚(比我的答案清楚得多)我认为这对Pish很有帮助,因为我们不知道到底在寻找什么:)不确定我们是否需要标记这个问题顺便说一句。这正是我想要的谢谢。我对这一点的理解仍处于初级阶段。在这里,VSTS是我前进的方向。我想这将是一个漫长而有趣的旅程。谢谢