TDD现在似乎在每个人的嘴唇上,我自己尝试了一些,但我认为我没有得到这个想法.我正在抓住如何编写单元测试,但我不明白我的单元测试应该测试什么.
我知道这是一个很大的问题,但我没有因为在互联网上阅读文章而变得更聪明,因为他们似乎都关心如何测试,而不是关注什么.
作为一个例子 - 我有(或将要写)一个GuestbookController,其中包含查看,添加,编辑和删除帖子的方法.我需要测试什么?我该怎么做?
我已经阅读了关于单元测试各种应用程序的有用性的一些线程.意见的范围可以从"始终测试所有内容"到"单元测试无用",以及介于两者之间的所有内容("测试哪里有意义").我倾向于向中间倾斜.
这引出了我的问题.我正在尝试根据此SO帖子中的建议来确定测试第三方ORM的基本单元测试是否有益或实用: 链接文本
根据您使用该工具的方式,某些基线测试可能有助于防范未来的重大变更.例如,不是模拟整个n层链(我不是在没有必要时嘲笑的粉丝),只需使用ORM工具来创建,读取,更新和删除典型的对象/记录,使用(测试)数据库上的直接SQL语句验证操作.这样,如果第三方供应商稍后更新了破坏您将了解的基本功能的内容,并且项目的新开发人员可以轻松地了解如何使用单元测试示例中的ORM工具.
根据这个建议,我的主要保留意见是它需要太多的设置,维护是一件令人头痛的问题,而且在我们的环境中这一点都不实用.以下是要考虑的一些要点的摘要:
那么,是否值得通过所有这些麻烦来确保ORM做它应该做的事情(这是CRUD)?这不应该是供应商的责任吗?
我想知道为什么我应该为我自己手动测试的东西编写测试.我不写rspec测试或类似的东西.为了测试,我会写一些东西然后去浏览器并确保更改做我想要的.我听说这种方法被描述为"错误驱动的开发".
我现在写的应用程序通常范围和大小都很小.我是唯一的开发人员(通常),因此我不必担心将其他人的代码合并到我自己的测试中.
我可以看到需要测试具有数百种表单的大规模应用程序.但对于我自己开发的较小的应用程序,编写测试所需的时间比仅填写信息要长得多.我听说很多开发人员主张测试驱动开发,但我还没有"看到光明".这似乎是一个好主意,但我无法证明编写测试(似乎)需要的工作量.