【问题标题】:Unit testing modularized ASP.Net webforms pages单元测试模块化 ASP.Net 网络表单页面
【发布时间】:2011-09-04 08:08:32
【问题描述】:

我目前正在开发一个使用 ASP.Net Web 表单的遗留应用程序。此应用程序中的页面在 aspx 和 ascx 文件中混合了格式和逻辑。通常是这样的:

if (number of passengers > 1)
  include singlePassengerForm.ascx
else 
  include multiPassengerForm.ascx

但想想更复杂 - 嵌套的 ascx 包含、更多的逻辑、更大的页面等等。

我想解决这个问题,但速度很慢。我目前正在推动的最终设计是一个非常轻量级的页面/控件,它没有任何逻辑,但只会从模型中挑选东西(包括要嵌入的 ascx)。我喜欢页面和控件被分解成更小部分的事实,我想保留它。所以这将转化为一个互连模型(例如:ReservationFormModel 有一个PassengerFormModel - 它可以是一个SinglePassengerForm 或一个MultiplePassengerForm)和一组互连页面,其中可能有一组控制器来填充模型并将模型和页面连接起来。所以有点MVCish。基本思想是,我想对该逻辑进行单元测试。

我想做的另一件事是将其修复为一个持续的过程 - 而不是一次大爆炸。所以我希望能够从小处着手,我只修复页面的一部分,而页面的其余部分仍然使用 aspx/ascx 中嵌入逻辑和数据的旧方式。

非常感谢任何与此相关的想法/建议/经验报告。

我已经看到了这个问题的答案:What is the best way to do unit testing for ASP.NET 2.0 web pages? 和这个:Unit Testing Legacy ASP.NET Webforms Applications 但我正在寻找更具体的东西

【问题讨论】:

    标签: unit-testing webforms


    【解决方案1】:

    如您所知,WebForm 路径并不是编写代码的最可测试的方式。 MVC 模式的一个关键方面实际上是可以更好地测试控制器。

    一个简单的解决方案是在“逻辑”类(如 MVC 控制器)中包含核心逻辑,并使用页面隐藏代码仅将数据绑定到控件。然后,您可以使用例如 NUnit 框架来创建测试夹具和 NCover 来监控测试代码覆盖。

    【讨论】:

    • 我觉得这并不能真正回答我的问题。澄清一下:我手上已经有一个代码库,它在后面的代码中使用了逻辑。我希望能够转向经过测试的控制器/模型方法,但我没有时间以大爆炸的方式进行。在单个页面/控件中,我希望能够将逻辑的一部分(我需要更改)移动到控制器,为此编写测试,然后进行更改。您对此有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2015-04-18
    • 1970-01-01
    相关资源
    最近更新 更多