C# 如何确保在单个测试类中正确配置asp.net web api服务中的所有控制器?

C# 如何确保在单个测试类中正确配置asp.net web api服务中的所有控制器?,c#,asp.net-mvc,unit-testing,reflection,asp.net-web-api,C#,Asp.net Mvc,Unit Testing,Reflection,Asp.net Web Api,我将重点放在asp.net和mvc上,更具体地说是MVC5的web api(2.0)部分,我喜欢使用属性并创建自己的属性类来控制如何处理所有api端点的请求和返回响应 本文描述了如何对单个控制器进行单元测试,以确保它保持正确的属性,并且不会添加不需要的属性 这是对单个控制器进行单元测试的一种非常有效的方法。然而,我更喜欢将API配置的所有测试放在一个地方,而不是分散在单个控制器的单元测试中。特别是在使用时,一个控制器可以很容易地被另一个控制器替换,而该控制器可能没有正确的属性,并且其测试伙伴也不

我将重点放在asp.net和mvc上,更具体地说是MVC5的web api(2.0)部分,我喜欢使用属性并创建自己的属性类来控制如何处理所有api端点的请求和返回响应

本文描述了如何对单个控制器进行单元测试,以确保它保持正确的属性,并且不会添加不需要的属性

这是对单个控制器进行单元测试的一种非常有效的方法。然而,我更喜欢将API配置的所有测试放在一个地方,而不是分散在单个控制器的单元测试中。特别是在使用时,一个控制器可以很容易地被另一个控制器替换,而该控制器可能没有正确的属性,并且其测试伙伴也不会测试这些属性

我设想的是一个单一的测试类,在这个测试类中,API配置的所有方面都可以得到保护,以防止(无意中)更改带来的意外影响。我正在努力解决的是如何设置它。Bryan Avery的文章(如上所述)展示了如何获取控制器类的自定义属性列表,但是:


如何获得测试项目中所有控制器的列表?

反思应该可以帮助您:

var myControllers = Assembly.Load(yourAssemblyName)
    .GetTypes()
    .Where(t => typeof(t).IsAssignableFrom(ApiController))
    .ToList();

反思应该对你有所帮助:

var myControllers = Assembly.Load(yourAssemblyName)
    .GetTypes()
    .Where(t => typeof(t).IsAssignableFrom(ApiController))
    .ToList();

这在ASP.NETCore中起作用,基于Where子句,但使用了Where子句

var controllers = typeof(Startup)
.Assembly
.GetTypes()
.Where(t => typeof(Microsoft.AspNetCore.Mvc.Controller).IsAssignableFrom(t))
.ToList();

这在ASP.NETCore中起作用,基于Where子句,但使用了Where子句

var controllers = typeof(Startup)
.Assembly
.GetTypes()
.Where(t => typeof(Microsoft.AspNetCore.Mvc.Controller).IsAssignableFrom(t))
.ToList();

我从一个类似的项目中复制粘贴,因为我自己也有过这样的需要只是一个输入错误:
。其中(t=>t.IsAssignableFrom(typeof(ApiController))
我从一个类似的项目中复制粘贴,因为我自己曾经有过这样的需要只是一个输入错误:
。其中(t=>t.IsAssignableFrom(typeof(ApiController))