【发布时间】:2011-10-29 22:05:23
【问题描述】:
我作为 .Net 开发人员已经有很长一段时间了,并且正在努力将自己的头脑围绕在真正实用的单元测试上。
最具体地说,我正在研究 ASP.Net MVC 3 项目的单元测试。
我已经阅读了相当多的内容,并且相信我在学术层面上理解它(即基本上确保您所做的更改不会破坏其他内容)。但是,我在示例中看到的所有测试都是非常愚蠢的事情,无论如何这将是一个非常明显的问题(此控制器是否返回具有此名称的视图?)。
所以,也许我遗漏了一些东西,或者只是没有看到任何真正好的测试示例或其他东西,但它确实看起来像一堆额外的工作和模拟、ioc 等的复杂性,我只是没有看到平衡收益。
请教我:)
【问题讨论】:
-
您基本上是在说您看不到使用代码来测试您的应用程序,它假设 QA 测试会找到所有内容。请记住,单元测试的一大优势是随着应用程序变得更加复杂,它有助于确保原始功能不会中断。您所说的测试是微不足道的,是的,但可以提供很大帮助。更好的选择是测试业务逻辑片段。很难演示这个 - 因为几乎每个应用程序都有不同的要求。测试您的验证代码在用户离开前是否有效。一个电子邮件地址,并且您无法保存损坏的对象。
-
您可能破坏了您的对象验证。测试密码重置功能是否有效。测试在应用优惠券对象时降低订单价格的计算是否有效。看到 - 如果不看到您的应用,就很难说出什么适合您。
-
添加到 Adam 的 cmets 中,我想说的是,除非您找到进行单元测试的开源项目(或您雇主的项目),否则很难在实践中看到好处。互联网上的示例代码(以及某些书籍)由于示例代码的性质而常常“非常愚蠢”(简而言之,可以理解基本概念,而不是典型地仿照现实世界的项目)。确保发布条件保持最初预期的单元测试使我可以将这些信息卸载到代码中,而不必记住所有信息或编写一些冗长的文档...
-
(续)很快就与软件不同步并被扔在架子上,以便稍后粉碎,因为由于程序的发展它变得不正确。有了这些单元测试,我不得不回答“某些事情发生了变化并破坏了测试。为什么?”这个问题。答案可能是这个新代码不经意间让事情陷入了糟糕的状态。答案也可能是预期的行为已经改变,需要重新检查测试,可能会改变或删除。对于非平凡的应用程序,单元测试提供了预期的后置条件的强制执行。
标签: unit-testing model-view-controller asp.net-mvc-3