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

推荐答案

微软推出了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主要是声明性的.这里有一个很大的"阻抗失配".

Asp.net相关问答推荐

什么是 SNIReadSyncOverAsync,为什么需要很长时间才能完成?

Dotnet core 2.0 身份验证多模式身份 cookie 和 jwt

Server.Transfer 在执行子请求时抛出错误.如何解决?

威胁已经被清除了

System.Net.Http 版本冲突导致构建警告

多个 DataContext 类是否合适?

使用 JavaScript 更改 ASP.NET 标签的可见性

如何计算/查找给定日期的周数?

使用 JSON.NET 解析 json 字符串

您对 Windows Workflow Foundation 有何体验?

IIS 6.0 通配符映射基准?

ASP.NET URL 重写

将数据表导出到 Excel 文件

在asp.net控件之间动态添加

发布网站项目时临时路径太长

如何在 ASP.NET 中设置下拉列表项?

如何通过 Google 图表 API 使用 X 轴中的日期?

VS 2010 中缺少 App_Code 文件夹

ASP.NET 身份提供程序 SignInManager 不断返回失败

禁用文本框的模型绑定