第十章 综述
TDD 的最佳实践
命名规约
1 将实现代码和测试代码分开
src/main/java
src/test/java
2 将测试类和实现放在一个包中
不同目录,但是package相同
3 以类似被测类的方式给测试类命名
有助于与快速找到被测类。一种常见的做法是,在被测类加上后缀Test。
4 给测试方法指定描述性名称
譬如采用BDD方式,以Given/When/Then的方式命名测试方法。譬如:
@Test
public void whenPlayAndWholeHorizontalThenWinner(){
}
流程
1 先编写测试用例,再编写实现代码
2 仅在测试失败后才编写新代码
3 每次修改实现代码后,都再次运行所有测试
4 仅当所有测试都通过后才编写新测试
5 仅当测试都通过后才重构
开发实践
1 编写让测试能够通过的最简单的代码
2 先编写断言,再编写操作
3 最大限度减少每个测试中的断言
4 不要让测试依赖其他测试
5 测试的运行速度必须很快
6 使用测试替身
7 使用 setup/teardown方法
8 不要再测试中使用基类
(哈哈,这条和<JUnit Receipes>恰好相反,它说 “迟早你会需要一个测试基类”)
工具
1 代码覆盖率和持续集成工具
2 结合使用TDD和BDD