我知道Microsoft推出ASP.NET MVC的原因是为了简化ASP.NET的测试驱动设计(TDD)。但是,我希望在ASP.NET WebForms中有一个相当大的棕色字段(现有)应用程序,我希望在其中实现一些TDD类型的功能。我假设有一种方法可以执行此操作,但是有哪些可行的选择?
最佳答案
微软之所以推出ASP.NET MVC,是因为他们认为他们可以从尚未开发的市场中获利-那些认为Web Forms太“超重”,并且正在使用轻量级的框架进行编程的人。这包括那些习惯了MVC范例的人。
它还包括无法弄清楚如何在Web表单中进行单元测试的人员,以及想使用单元测试和TDD的人员。
与其他形式一样,使用Web表单执行此操作的方法是将除UI代码之外的所有内容分离到类库中的单独类中。使用TDD开发那些类。
争议的下一层是是否有必要使用TDD来开发其余代码:标记,客户端代码,用户交互等。我的回答是,如果您将其余部分隔离并进行了测试,那就是不值得为此使用TDD。
考虑:您的页面需要具有特定的外观。您是否要编写一个失败的单元测试来证明您正确使用了CSS?要证明您使用的是正确的CSS样式?我不这么认为。
需要说明的是:在TDD中,我们从失败的单元测试开始。然后,我们进行最简单的更改,使测试成功。
想象一下将TDD用于网页。您将产生哪些失败的测试?
上面的所有测试都不显示页面的外观。没有一个可以测试页面上任何JavaScript的客户端行为。
我认为这很愚蠢。而是,测试您的DAL方法,该方法根据ID检索数据。确保它返回ID为1的正确ID。然后,手动测试该页面以确保它看起来正确将花费多长时间,您可以输入“1”并单击“转到”,然后在其中显示数据网格对于客户1是正确的数据吗?
测试驱动开发和自动化单元测试旨在测试行为。 Web表单的UI主要是声明性的。这里有一个很大的“阻抗失配”。
关于asp.net - 如何在ASP.NET WebForms中实现TDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1053207/