TDD 实战(1)

TDD 实战(1)

现在提供了内容的视频版本:B站。


《实战TDD(1):体验》

《实战TDD(2):Tasking to Action》

《实战TDD(3):Simple Design》

工作常见的几种情况:

0,想了解 TDD 如何做,但是找到的资料多时十多年前的内容了,甚至里面没有明确说明要怎么做
1, 听到身边人的谈论TDD,但是并使轮到工作时却不知道怎么用TDD
2,本来要学 TDD 结果显示得到了一大堆的道理,无从下手
3,看到那些讲 TDD 自己工作中都不用TDD

本文将通过实战的方式来讲解 TDD,以代码为主,“少讲道理,多练习”。当需要的时候才会引入一些理论或者线索,帮助理解、思考。

01. 需求

为了统一上下文,我们这里裂了一个储物柜的需求,围绕储物柜的业务需求使用 TDD 来驱动出业务代码:

现在一家公司提供储物柜(Store Content Ark)功能。
用户通过将包(Bag)存入到储物柜后得到一个二维码(QR Code),
通过二维码能够从储物柜取出包。

要实现的功能就是 “存包得到二维码” 和 “用二维码取包"。


02. 任务分解

"磨刀不误砍柴工",我们先做任务分解,避免遗漏场景。大的场景包括两个:存包和取包,它们各自中又包含一些特殊场景。

Business Tasks 存包01,当储物柜有空位,存包,得到二维码 02,当储物柜没有空位,存包,存包失败 取包03,用二维码从储物柜取包,得到自己的包 04,用过的二维码从储物柜取包,取包失败05,无效二维码从储物柜取包,取包失败

03,TDD 实现存包功能

TDD 有一个简单的过程就是:红、绿、重构。

红 : 测试能够运行,但是断言失败。
绿 : 实现业务代码,刚才失败的断言通过
重构:有意图的对代码进行重构(平时更倾向于可读性)

01,先写测试 1


02,编写测试 1 对应的实现


03,编写测试 2


04,编写测试 2 对应的实现


04,TDD 实现取包功能

01,编写测试 3


02,编写测试 3 对应的实现


03,重构测试 3


04,编写测试 4


05,编写测试 4 对应的实现


06,测试 4 的重构


06,编写测试 5


07,编写测试 5 对应的实现


08,测试 5 重构 1


09,测试 5 重构 2


10,测试 5 重构 3


05,总结。

TDD 的流程就是:

先,做任务分解;

再,执行红、绿、重构等流程;

在重构环节我们使用 Simple Design,SOLID等,同时能够识别代码中的 Smell,并运用重构手法。

下一篇,将介绍如何让任务拆件做的更准确。

编辑于 2020-04-27 18:37