# TDD实战（一）开发模式




#### TDD 介绍
---
TDD是测试驱动开发（Test-Driven Development）的英文简称，是敏捷开发中的一项核心实践和技术，也是一种设计方法论。TDD的原理是在开发功能代码之前，先编写单元测试用例代码，测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践，但不只适用于XP（Extreme Programming），同样可以适用于其他开发方法和过程。

-- __百度百科__

#### 准备工具
---
TDD只是一种开发模式，它并没有用到新的技术。

* Java : 因为它是主流的编程语言，应用广泛，相关实践也非常多。

* [IntelliJ-IDEA](http://www.testclass.net/idea/) : Java 主流IDE（集成开发工具）。

* [JUnit](http://www.testclass.net/junit/) ： Java 主流单元测试框架，当然，你选择 [TestNG](http://www.testclass.net/testng/) 也是完全可以的。

* Gradle : 构建工具。

#### TDD 开发模式
---

<font color="red">“__红灯 -- 绿灯 -- 重构__”</font> 流程是TDD的基石。 这个过程就像打乒乓球，快速的在测试代码和实现代码之间切换。

TDD 开的过程： 每次只考虑一个需求。首先编写一个测试，看看它是否未通过；然后编写实现这个测试的代码，运行所有测试并验证它们是否全部通过；最后，通过重构改进代码。不断重复这个过程，直到成功实现所有需求。


#### 需求
---
本系列实战 “__井字游戏__” ，这是一个非常简单的小游戏。

![](http://img.testclass.net/tdd_jingzi_game.png)

__说明：__

是一种在3*3格子上进行的连珠游戏，和五子棋比较类似，由于棋盘一般不画边框，格线排成井字故得名。游戏需要的工具仅为纸和笔，然后由分别代表O和X的两个游戏者轮流在格子里留下标记（一般来说先手者为X）。由最先在任意一条直线上成功连接三个标记的一方获胜。

不会玩的同学可以先去完两把：[井字小游戏](http://www.4399.com/flash/46864_3.htm)。




原始封面

![课程图片](https://images.unsplash.com/photo-1542435503-956c469947f6?w=300)


