Skip to Content
学习测试驱动开发
book

学习测试驱动开发

by Saleem Siddiqui
July 2025
Intermediate to advanced
280 pages
3h 5m
Chinese
O'Reilly Media, Inc.
Book available
Content preview from 学习测试驱动开发

第 1 章. 资金问题

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

我不会为复杂这一边的简单而付出任何代价,但我愿意为复杂另一边的简单而付出生命。

奥利弗-温德尔-霍姆斯(Oliver Wendell Holmes Jr.

我们的开发环境已经准备就绪。在本章中,我们将学习支持测试驱动开发的三个阶段。 然后,我们将使用测试驱动开发编写第一个代码功能。

红-绿-重构:测试驱动开发的基石

测试驱动开发分为三个阶段:

  1. 红色。我们编写了一个失败的测试(包括可能的编译失败)。我们运行测试套件来验证失败的测试。

  2. 绿色。我们编写了足够的生产代码,使测试为绿色。我们运行测试套件来验证这一点。

  3. 重构。我们会删除任何有异味的代码。这些可能是由于重复、硬编码值或语言习惯用法的不当使用(例如,使用冗长循环而不是内置迭代器)造成的。如果我们在重构过程中破坏了任何测试,我们会优先将其恢复到绿色状态,然后再退出此阶段。

这就是红-绿-重构(RGR)循环,如图 1-1 所示。该循环的三个阶段是测试驱动开发的基本构件。我们在本书中开发的所有代码都将遵循这一循环。

The Red Green Refactor (RGR) cycle. Red: write a failing test. Green: write just enough production code to pass the test. Refactor: remove code smells, e.g. duplication or poor design, without adding new features.
图 1-1. 红-绿-重构循环是测试驱动开发的基础
重要内容

红-绿-重构循环的三个阶段是 TDD 的基本组成部分。

问题出在哪里?

我们有一个资金问题。不,不是那种几乎人人都有的问题:钱不够用!它更像是一个 "我们想记录我们的钱 "的问题。

假设我们需要建立一个电子表格来管理不止一种货币的资金,也许是为了管理股票投资组合。

股票 股票交易所 股票 股票价格 总价

IBM

纳斯达克

100

124 美元

12400 美元

宝马

DAX

400

75 欧元

30000 欧元

三星

韩国证券交易所

300

68000 韩元

20400000 韩元

要建立这个电子表格,我们需要对任何一种货币的数字进行简单的算术运算:

5 美元 × 2 = 10 美元

10 欧元 × 2 = 20 欧元

4002 韩元 / 4 = 1000.5 韩元

我们还需要在不同货币之间进行转换。例如,兑换 1 欧元可以得到 1.2 美元,兑换 1 美元可以得到 1100 韩元:

5 美元 + 10 欧元 = 17 美元

1 美元 + 1100 克鲁瓦 = 2200 克鲁瓦

上述每一项都将是我们使用 TDD 实现的一个(很小很小的)功能。我们已经有好几个功能要实现了。为了让我们一次只专注于一件事,我们将用粗体字标出我们正在开发的功能。当我们完成一项功能时,我们会将其划掉,以示满意。

那么,我们应该从哪里开始呢?如果本书的标题还不够明显,我们将从编写测试开始。

第一个失败的测试

让我们从实现列表中的第一个 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Python-Tricks

Python-Tricks

Dan Bader
Filling Execution Gaps

Filling Execution Gaps

Todd C. Williams
Mining the Social Web, 3rd Edition

Mining the Social Web, 3rd Edition

Matthew A. Russell, Mikhail Klassen

Publisher Resources

ISBN: 9798341663183Supplemental Content