【问题标题】:Writing a unit test to verify all ASP.NET MVC controllers inherit a base controller编写单元测试来验证所有 ASP.NET MVC 控制器是否继承了一个基本控制器
【发布时间】:2013-02-21 23:28:14
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net-mvc unit-testing inheritance controller


    【解决方案1】:

    这听起来似乎更适合静态分析,例如 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))
    

    【讨论】:

    • 谢谢 - 这帮助我走上正轨! (另外 - 了解了代码分析 - 你是冠军!)
    猜你喜欢
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多