Asp.net mvc 编写单元测试以验证所有ASP.NET MVC控制器是否继承基本控制器

Asp.net mvc 编写单元测试以验证所有ASP.NET MVC控制器是否继承基本控制器,asp.net-mvc,unit-testing,inheritance,controller,Asp.net Mvc,Unit Testing,Inheritance,Controller,谢谢你提前回答。我刚刚开始钻研单元测试asp.net mvc web应用程序 我有几个控制器,它们都继承自一个BaseController(这个BaseController负责菜单、租户检查等)。我想知道是否有一种方法可以对所有控制器进行单元测试,以确保它继承自BaseController。这听起来似乎更适合静态分析,例如Visual Studio的代码分析功能(也称为“FxCop”)。但是我以前写过代码分析规则,我不确定我会推荐它,除非你满头头发,想把头发都拔出来 回到单元测试: 在单元测试中

谢谢你提前回答。我刚刚开始钻研单元测试asp.net mvc web应用程序


我有几个控制器,它们都继承自一个BaseController(这个BaseController负责菜单、租户检查等)。我想知道是否有一种方法可以对所有控制器进行单元测试,以确保它继承自BaseController。

这听起来似乎更适合静态分析,例如Visual Studio的代码分析功能(也称为“FxCop”)。但是我以前写过代码分析规则,我不确定我会推荐它,除非你满头头发,想把头发都拔出来

回到单元测试:

在单元测试中,策略是定位控制器程序集中的所有控制器类型,并确保它们具有正确的基类。下面是一些伪代码:

Type[] allTypes = typeof(SomeTypeInTheAssembly).Assembly.GetExportedTypes();
Type[] allControllerTypes = allTypes.Where(
    t => typeof(IController).IsAssignableFrom(t));
Type[] allControllerTypesExceptBaseClass = allControllerTypes.Except(
    t => t == typeof(BaseController);

// Assert that all controllers derive from BaseController
Assert.True(allControllerTypesExceptBaseClass.All(
    t => typeof(BaseController).IsAssignableFrom(t))

谢谢-这帮助我走上了正确的道路!(另外-了解了代码分析-你是冠军!)