4

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

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

4

1 回答 1

4

这听起来似乎更适合静态分析,例如 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))
于 2013-02-22T00:00:15.630 回答