我在TD上读了很多关于TDD和单元测试的问题和答案,但是我没有发现任何答案:我从哪里开始?从头开始TDD项目
我和团队已经完成了一些项目,其中我们采用了单元测试,用于我们的代码......但先编码然后再进行单元测试。在开发过程的某个阶段,首先编写测试代码然后编写代码变得很自然,这使我们获得了更多的TDD风格。
现在我们想进行下一步,并尝试从一开始就用TDD启动一个新项目。这是问题......从哪里开始?当我没有代码时,我会写的第一个测试是什么?
比方说,为了让上下文思考,我必须开发一个以文档为中心的互联网应用程序,只需要一点工作流程和其他的东西。但是让我们从头开始:首先,我想创建一个简单的页面,列出存储在数据库表格中的所有文档(元数据)(很简单,呃?)。 这是我写的第一个测试?假设我正在使用Hibernate来访问数据库...我会测试ipothetical方法getAllDocuments()吗?但是,我应该使用一个模拟对象来替代Hibernate?那么我测试了什么?
我在这里有点困惑......另外,getAlDocuments()可能永远不会是一个生产方法......所有文档集合都会被排序并被某些东西过滤......它有意义吗? 任何建议将理解
编辑:
读你的答案(和http://programmers.stackexchange.com相似主题),我带着TDD的美好憧憬之后,但我仍然有一个dubt。
我总是尽管TDD是关于首先进行单元测试的...从未考虑过端到端测试。 但让我问:TDD说你必须写一个测试并看到一个编译错误;然后你创建类和方法,你会得到一个测试失败;然后你执行该方法并通过测试。在测试失败之前,您无法编写代码;在所有测试通过之前,你不能写另一个测试。我在这里吗?
作为第一次测试,我该如何进行端到端测试?我应该在所有层中编写所有代码,以通过测试。但后来我会有一大堆的类和方法都通过了我的端到端测试(尽管我不应该称之为集成测试?)。这意味着我不再需要单元测试,因为我已经有了一个覆盖我的代码的测试。我不能写一个已经通过的测试,这是违背TDD的实践。
帮助我理解这个提前进一步的步骤请
我通常从写入自动加载器组件的测试开始。然后为我添加的每个班级。 – hakre 2011-06-16 16:37:03
http://programmers.stackexchange.com/questions/84252/tdd-what-happens-before-the-first-unit-test/84255#84255 就在昨天问了同样的问题。 – 2011-06-16 16:55:55