快速可靠测试与代码重构指南
一、测试相关要点
- 分离基础设施与逻辑
- 纯逻辑代码,即不依赖任何外部世界相关事物的代码,是最容易测试的。为了让测试更快、更可靠,应将逻辑与基础设施分离,这也是保持设计简洁的好方法。
- 有多种方法可以实现基础设施与逻辑的分离,如Alistair Cockburn的“六边形架构”、Gary Bernhard的“函数式核心,命令式外壳”以及“A - 框架架构”。这些方法通常是修改代码,使逻辑“纯净”且不依赖基础设施代码。
- 在“A - 框架架构”中,有一个顶层的“应用”层来协调“逻辑”和“基础设施”层,这两层彼此 unaware。以下是应用层可能出现的简化代码示例:
let input = infrastructure.readData(); // 基础设施
let output = logic.processInput(input); // 逻辑
infrastructure.writeData(output); // 基础设施
- 仅将宽泛测试作为安全网
- 如果正确使用测试驱动开发(TDD)、单元测试、狭义集成测试和社交测试,代码应该能得到全面覆盖,宽泛测试通常是不需要的。
- 为了安全起见,可以在测试套件中添加一些宽泛测试。比如编写少量的冒烟