TDD 实战(1)
现在提供了内容的视频版本:B站。
工作常见的几种情况:
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