TDD 实战(1)

373 阅读2分钟

现在提供了内容的视频版本: 实战TDD(1):体验

工作常见的几种情况:

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,并运用重构手法。

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