感谢您提前回答。我刚刚开始研究单元测试 asp.net mvc web 应用程序。
我有几个 Controller ,所有 Controller 都继承自一个 BaseController(这个 BaseController 负责菜单、租户检查等)。我想知道是否有一种方法可以对所有 Controller 进行单元测试,以确保它继承自 BaseController。
最佳答案
这听起来似乎更适合静态分析,例如 Visual Studio 的代码分析功能(又名“FxCop”)。但是我之前写过代码分析规则,我不确定我会推荐它,除非你满头的头发,并且想拔掉你所有的头发!
所以回到单元测试:
在您的单元测试中,策略是在您的 Controller 程序集中定位所有 Controller 类型并确保它们具有正确的基类。这是一些伪代码:
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))
关于asp.net-mvc - 编写单元测试来验证所有 ASP.NET MVC Controller 都继承了一个基本 Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15014218/