感谢您提前回答。我刚刚开始研究单元测试 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/

10-10 18:01