9.1 TDD三定律
第一定律 在编写不能通过的单元测试前,不可编写生产代码。
第二定律 只可编写刚好无法通过的单元测试,不能编译也算不通过。
第三定律 只可编写刚好足以通过当前失败测试的生产代码。
9.2 保持测试整洁
测试代码和生产代码一样重要。它需要被思考、被设计和被照料,它该像生产代码一般保持整洁。
测试带来一切好处
如果测试不能保持整洁,你就会失去它们。没有了测试,你就会失去保证生产代码可扩展的一切要素。
9.3 整洁的测试
整洁的测试有3个要素:可读性、可读性和可读性。
测试应该呈现出构造-操作-检验(BUILD-OPERATE-CHECK)模式。
9.3.1 面向特定领域的测试语言
我们不直接使用用来对系统进行操作的API,而是打造了一套包装这些API的函数和工具代码,这样就能更方便地编写测试,写出来的测试也更便于阅读。
9.3.2 双重标准
测试代码应当简单、精悍、足具表达力,但它该和生产代码一般有效。
9.4 每个测试一个断言
单个测试中的断言应该最小化。
每个测试一个概念
最佳规则也许是应该尽可能减少每个概念的断言数量,每个测试函数只测试一个概念。
9.5 F.I.R.S.T
整洁的测试还遵循以下五条规则:
快速(Fast)。测试应该够快。
独立(Independent)。测试应该相互依赖。
可重复(Repeatable)。测试应当可以在任何环境中重复通过。
自足验证(Self-Validating)。测试应该有布尔值输出。
及时(Timely)。测试应及时编写。
9.6 小结
测试保证和增强了生产代码的可扩展性、可维护性和可复用性,所以,保持测试整洁吧。