我是否可以使用任何技术来查找解决方案中注释为测试的所有测试([TestMethod]
, [Fact]
, [Theory]
...)?
语境:
我对这一切都很陌生,但正在尝试制定持续部署策略。我想在发布过程期间/之后找到并运行解决方案中的所有测试。
这些不是依赖于构建的单元测试,而是端到端解决方案测试的一部分。
如果我的想法偏离了正确的轨道,请告诉我。
因此,如果您想要一个仅使用 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!
}
}
}
}
}
Again, 有一些工具可以自动为您执行此操作,QHero 为您提供了一些链接。我在这里介绍的是一个很长的方法,需要您编写自己的工具,而现有的工具则不需要这样做。但反射是一种方便的技术,例如,这对于在测试工具之外生成列出测试方法/类或其他内容的报告可能很有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)