关于本书
源码下载:http://www.manning.com/koskela
1 综述
- Martin Fowler 的 《重构:改善既有代码的设计》
- Joshua Kerievsky 的《重构与模式》
3 小步重构
3.1.1 用 Spike 开发原型
- Spike 算是一个小的实验,目的在于让我们掌握解决当前问题所需要的技术、工具、算法等
- 这里的“小”是相对,大部分 Spike 都会用去 15 分钟到几小时,一个 TDD 周期只会用去几秒钟或者几分钟时间,而不是几小时
- Spike 的主要目的是学习知识,通过 Spike,我们至少要弄清楚目前解决方法是否值得继续研究,还是要换一种解决方案
3.1.2 写测试学知识
1、参与维护与开发:视频、语聊相关业务 2、参与维护与开发:财务、活动、多媒体存储等功能模块
TDD 的概念与模式
4.1.3 测试驱动的基本准则
- 绝不跳过重构
- 尽快变绿
- 犯错后减慢速度
4.2 重要的测试概念
- 4.2.1 夹具是测试的上下文
- 4.2.2 用测试替身替换依赖
- 4.2.3 基于状态及基于交互的测试
- 基于状态的测试:利用对象内部状态来验证执行结果的正确性
- 测试交互:
- 验证待测对象与其协作对象以我们期望的方式进行交互,而非验证这些对象的最终状态是否匹配
- 换句话说,我们并不关心对象的内部状态,关心的是待测对象是否正确调用了协作对象的方法,是否使用了正确的参数,调用顺序是否正确
- 实现基于交互的测试库:
- EasyMock https://easymock.org/
- jMock http://jmock.org/
- RMock http://rmock.sourceforge.net/
- 各种方法的适用范围
- 我正确使用了我周围的对象吗?
- 我对外部输入做出正确的回应了吗?
- J.B. Rainsberger《程序员实用测试技巧》
5 测试驱动 Web 组件
6 测试驱动数据访问
6.2 用单元测试驱动数据访问
⭐️ 存在以下任何一个情形都不是单元测试:(见《修改代码的艺术》)
- 访问了数据库
- 有网络通信
- 访问了文件系统
- 不与其他任何单元测试同时运行
- 必须配置好环境后才能运行