gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:41 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

关于C# 查找解决方案中的所有测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45942674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com