我在TD上阅读了很多关于TDD和单元测试的问题和答案,但我没有找到答案:我从哪里开始?
我和团队已经完成了一些项目,其中我们采用了单元测试,用于我们的代码......但首先是代码,然后是单元测试.在开发过程的某个阶段,首先编写测试然后编写代码变得非常自然,这使我们更具TDD风格.
现在我们想进行下一步,并尝试从一开始就使用TDD开始一个新项目.这是问题......从哪里开始?当我没有代码时,这是我写的第一个测试?
让我们说,只是为了有一个思考的背景,我必须开发一个互联网应用程序,以文档为中心,有一点工作流程......还有别的东西.但是让我们从头开始:首先,我想创建一个简单的页面,列出存储在DB上的表中的所有文档(元数据)(非常简单,嗯?).这是我写的第一个测试?假设我正在使用Hibernate访问数据库...我会测试ipothetical方法getAllDocuments()吗?但是我应该使用模拟对象来替换Hibernate吗?那么我在测试什么?
我在这里有点混淆......而且getAlDocuments()可能永远不会是一个生产方法...所有的文档集合都将按照某些东西进行排序和过滤......这有意义吗?任何建议将不胜感激
编辑:
在阅读了你的答案(以及http://programmers.stackexchange.com上的类似帖子)之后,我对TDD有了更好的看法,但我仍然有一个dubt.
我总是认为TDD是关于首先进行单元测试...从未想过端到端测试.但是让我问一下:TDD说你必须编写测试并看到编译错误; 然后你创建类和方法,你得到测试失败; 然后你实现方法并通过测试.在测试失败之前,您无法编写代码; 在所有测试通过之前,你不能写另一个测试.我在这儿吗?
如何进行端到端测试作为我的第一次测试?我应该在所有层中编写所有代码,以便让测试通过.但是我会有一堆类和方法都通过我的端到端测试进行测试(我不应该把它称为集成测试吗?).这意味着我不再需要单元测试,因为我已经有一个覆盖我的代码的测试.我不能写一个已经通过的测试,这是针对TDD的实践.
请帮助我进一步了解这一步
Lad*_*nka 15
TDD不是关于单元测试--TDD是关于通过测试推动您的开发和架构 - 使用您需要的任何类型的自动化测试.你明白了吗?
您正在开始一个新项目,并且您可能拥有一组功能.您应该对要实施的功能有一些验收标准.这些标准可以定义您的顶级测试.让我们从端到端测试开始(这有时候很难,因为它涉及到尚不存在的UI)或者这些验收标准的集成测试.一旦测试失败,您将继续实现与大型测试相关的功能,但每个此功能将通过集成或单元测试再次驱动.如果所有顶级测试都通过,则该功能已完成.
如果您跳过大型测试(端到端,集成),您将开发一组经过良好测试的单元,这些单元在集成在一起时将无法工作,或者由于单元测试定义的局部范围,您的架构将不会很好.集成和端到端测试为您提供全球范围.
这是在测试引导的面向成长面向对象软件一书中的大型示例(Java)中描述的.
| 归档时间: |
|
| 查看次数: |
3399 次 |
| 最近记录: |