我知道微软推出ASP.NET MVC的原因是为了简化ASP.NET的测试驱动设计(TDD)。但是,我有一个相当大的棕色字段(现有)应用程序在ASP.NET WebForms,我想实现一些TDD类型的功能。我假设有一种方法来做到这一点,但什么是一些可行的选择?
解决方法
Microsoft介绍了ASP.NET MVC,因为他们认为他们可以从一个未开发的市场赚钱 – 那些觉得Web窗体太“重量级”,谁使用更轻量级的框架编程。这包括那些习惯于MVC范式的人。
它还包括那些不能想出如何在Web表单中进行单元测试,以及谁想使用单元测试和TDD的人。
使用Web表单的方式与其他方式一样,是将UI代码分离成类库中的单独类。使用TDD来开发这些类。
下一层的争议是是否有必要使用TDD来开发代码的其余部分:标记,客户端代码,用户交互等。我的回答是,如果你有其他的隔离和测试,不值得为此使用TDD的麻烦。
请考虑:您的网页需要有特定的外观。你要写一个失败的单元测试来证明你正在使用CSS吗?要证明你使用正确的CSS样式?我不这么认为。
澄清:在TDD中,我们从失败的单元测试开始。然后,我们进行最简单的可能的更改,将使测试成功。
想象一下,对于网页使用TDD。你会生产什么失败的测试?
>测试该页面是否正确的HTML
>测试该页面包含正确的标题
>测试该页面包含
>“输入ID”标签
> id文本框
>数据网格
>“Go”按钮
>在GET之后测试数据网格是否为空
>在文本框中输入“1”,并点击“Go”时,测试网格加载来自客户1的数据。
并且没有上述测试的页面的外观。它们都不会测试页面上任何JavaScript的客户端行为。
我认为这很蠢。而应测试根据ID检索数据的DAL方法。确保它返回ID为1的正确的ID。然后,手动测试页面以确保它看起来正确需要多长时间,您可以输入“1”并单击“Go”,并且出现在网格是客户1的正确数据?
测试驱动开发和自动化单元测试旨在测试行为。 Web表单的UI主要是声明性的。这里有一个大的“阻抗不匹配”。