导入
属性思维导论
了解本章将要讲解的内容。
在上一章中,我们介绍了基本属性的特性,包括其语法以及内置的生成器。我们通过实践 biggest(List) 函数,确保其行为正确。现在,我们应该对属性的形态和阅读方式有了较好的理解,但可能仍不太敢独立编写属性。编写属性的经验至关重要,经过持续练习,这个过程会逐渐变得自然。不过,为了本课程的目的,我们将尝试加快这一学习进程。
正如我们在前一章所观察到的,编写高质量的属性具有挑战性,所需投入的精力远超编写常规测试。在本章中,我们将介绍一些技巧,帮助大家从传统的测试思维过渡到自然地使用属性进行测试。
我们将分享几个实用的技巧,帮助我们在复杂情况下写出足够好的属性。这些技巧包括:
- 建模
- 将示例测试泛化为属性
- 寻找不变性
- 对称属性
...
编写属性的方法
首先,我们会尝试对代码进行建模,从而避免大量复杂的思考过程。当建模不可行时,我们将尝试从传统的示例测试中提炼出通用属性,以明确我们期望背后的规则。另一种方法是寻找不变性,从而从简单的属性逐步构建出完整的测试套件。最后,对于某些特定问题,我们还将利用对称属性作为一种简便的“捷径”。
让我们开始吧。