如何在ASP.NET WebForms中实现TDD

我知道微软推出ASP.NET MVC的原因是为了简化ASP.NET的测试驱动设计(TDD)。但是,我在ASP.NET WebForms中有一个相当大的brown field(现有)应用程序,我希望在其中实现一些TDD类型的功能。我假设有办法做到这一点,但有哪些可行的选择

微软推出ASP.NET MVC是因为他们认为他们可以从一个尚未开发的市场中赚钱——那些认为Web表单太“重”的人,以及使用更轻的框架编程的人。这包括那些习惯于MVC范式的人

它还包括那些不知道如何在web表单中进行单元测试的人,以及那些想使用单元测试和TDD的人

与其他方法一样,使用web表单的方法是将除UI代码之外的所有内容分离到类库中的单独类中。使用TDD开发这些类

下一层争议是是否有必要使用TDD来开发代码的其余部分:标记、客户端代码、用户交互等。我的回答是,如果您已经对其余部分进行了隔离和测试,那么就不值得为此而使用TDD

考虑:您的页面需要具有特定的外观。您是否打算编写一个失败的单元测试来证明您正确地使用了CSS?为了证明你使用的是正确的CSS样式?我不这么认为


澄清一下:在TDD中,我们从失败的单元测试开始。然后,我们进行最简单的更改,以使测试成功

想象一下,将TDD用于网页。你将进行哪些失败的测试

  1. 测试页面是否为格式良好的HTML
  2. 测试页面是否包含正确的标题
  3. 测试该页面包含的内容
    1. “输入ID”标签
    2. id文本框
    3. 数据网格
    4. “开始”按钮
  4. 测试GET后数据网格是否为空
  5. 在文本框中输入“1”并单击“Go”时,测试网格是否加载来自客户1的数据

并且没有对页面外观进行任何上述测试。没有一个测试页面上任何JavaScript的客户端行为

我认为那很愚蠢。相反,测试基于ID检索数据的DAL方法。确保它为ID 1返回正确的ID。然后,手动测试页面以确保其外观正确需要多长时间,您可以输入“1”并单击“Go”,并且网格中显示的数据是客户1的正确数据

测试驱动开发和自动化单元测试旨在测试行为。web表单的UI主要是声明性的。这里有一个很大的“阻抗失配”

发表评论