1 Star 0 Fork 0

Jin / tdd-in-action

加入 Gitee
与超过 800 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

《Java测试驱动开发》笔记

一、TDD之“红灯-绿灯-重构”过程

红灯状态:代码不管用 绿灯状态:一切都像预期的那样工作,但并不一定是最佳的; 重构阶段:此时测试很好地覆盖了各项功能,可以充满信心地去修改它,让它变得更好。

  1. 编写一个测试(红灯)

每次添加新功能时都首先编写一个测试,目的是在编写代码前专注于需求和代码设计。测试是可执行的文档,以后能够帮助理解代码目的及其背后的意图。 在此阶段,测试执行将以失败告终,即测试对代码的期望和代码实际的功能之间存在差距。

  1. 运行所有测试并确认最后一个未通过(红灯)

确认最后一个测试未通过后,就能断定它不会在没有引入新代码的情况下错误通过。 如果这个测试通过了,就意味着要么相关功能早就存在,要么测试本身存在误报问题。如果测试无论怎么实现都能通过,就意味着它毫无价值,应该删除。 最后一个测试不仅必须未通过,还必须是预期原因导致的。

  1. 编写实现代码(红灯)

该阶段的目标是编写代码使最后一个测试通过。在这个阶段无需追求让代码完美无缺,可以在后面进行改进。首先应该保证能打造一个由测试构成的安全网,并确认这些测试都能通过。 不要引入最后一个测试未描述的功能。如果要引入新功能,回到第一步,先编写新测试。所有测试通过之后,才能增加新功能。

  1. 运行所有测试(绿灯)

运行所有的测试,保证刚编写的代码没有破坏其他功能。通过运行所有测试,不仅可以确认最后一个测试的实现是正确的,还可确认它没有破坏整个应用程序的完成性。

  1. 重构

这是一个可选步骤,如果代码没有优化空间,可以越过该步骤。需要重构的原因可能有:代码难理解、代码位置不合理、代码重复、方法太长、类的功能太多等。重构的原则是不能改变任何既有的功能。

6.重复

所有的步骤完成之后,再重复它们。

二、 单元测试——专注当下

//TODO:

三、 设计——如果难以测试,说明设计不佳

设计原则

  1. 你不会需要它 消除冗余代码,专注于当前而不是以后的功能。代码越少,需要维护的代码就越少,引入bug的可能性也就越少。
  2. 不要自我重复(DRY) 重用而不是复制以前编写的代码。这样做的好处是,需要维护的代码更少,并确信使用的代码是可行的。
  3. 保持简单 由Kelly Johnson提出的。该原则指出,越简单的东西越能实现其功能。
  4. 奥卡姆剃刀原理 如果有两个或多个类似的解决方案,选择最简单的。
  5. SOLID(TDD思维的核心)
  • 单一职责原则:一个类应该只有一个导致它需要修改的原因
  • 开闭原则:类应该对扩展是开放的,对修改是关闭的。
  • 里氏替换原则:类应该能够被扩展它的类替换,即能用父类的地方应该都能用它的子类。
  • 接口分离原则:提供多个具体接口胜过提供单个通用接口。
  • 依赖倒转原则:类应该依赖于抽象而不是实现,这意味着类依赖必须专注于做什么而不是如何做。

简介

暂无描述 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/zhuojinhong/tdd-in-action.git
git@gitee.com:zhuojinhong/tdd-in-action.git
zhuojinhong
tdd-in-action
tdd-in-action
master

搜索帮助