【发布时间】:2014-01-13 03:49:32
【问题描述】:
我正在学习 TDD,但很难采用它,因为它并不简单。
我无法回答的问题是“如何在任何实现代码存在之前编写测试?”。
如果我们的目标类/目标方法/目标参数类型/目标返回类型不存在,
- 在测试中编写代码时我们指的是什么。我们如何开始编写测试?
- 如果我们能写的只是实际实现代码之前的测试方法名称,测试怎么会失败?
每个人都说为什么而不是如何
我已尽我所能找到详细说明在生产代码之前编写测试的资源,但假设我错过了好的资源,其中大部分都充满了陈词滥调 解释为什么 TTD 比专注于采用它的实践更重要。
一个示例用例。
假设我们正在为一所大学开发软件,我们的用例是课程注册。
为了简单起见,让我们把这个讨论限制在
- 场景:“一个学生每学期最多可以注册任意 3 门课程”
- 测试服务层和dao层。
伪代码
ENROLL(studentId, courseId)
//check if student enrolled in less than 3 courses in the same semester as given courseId belongs in.
//if yes, enroll him/her.
//if not, return an error.
上面的实际实现可能跨越几个涉及服务、daos 等的类。
请您解释一下如何逐步测试驱动开发它?如果你要使用 TDD 来实现它,你是如何一步一步地做到的。
我希望这可以帮助将来像我这样的许多斗争。
【问题讨论】:
-
你知道这个问题是开放式的,会有不同的答案吗?
-
您需要坐下来阅读一本书(或至少观看一些视频)。我推荐测试驱动开发:Kent Beck 的示例。
-
感谢您的回复。是的,我意识到这是一个开放式问题。只是想看看人们如何解决同样的问题,并可能帮助我和许多人走上正轨。
-
这是一个很好的问题。即使我已经很久了。正因为如此,许多开发人员在没有 TDD 的情况下离开了。
标签: java unit-testing junit tdd