本节书摘来自华章出版社《有效的单元测试》一书中的第2章,第2.6节,作者 (芬)Lasse Koskela,更多章节内容可以访问云栖社区“华章计算机”公众号查看
2.6 每个行业都有其工具而测试也不例外
我说的测试替身是什么?如果你的程序员工具箱中没有测试替身,你就错过了测试的许多功能。测试替身是程序员熟知的stub(桩)、fake(伪造对象)、mock(模拟对象)的总称。它们本质上是为了测试目的、用于替换真实协作者的对象,如图2.4所示。
你可以说测试替身是测试感染的程序员的最佳伙伴。因为它们促进了许多改进并为我们提供许多新工具,如:
通过简化要执行的代码来加速执行测试
模拟难以出现的异常情况
观察那些对测试代码不可见的状态和交互
关于测试替身还有很多要说的,下一章将详细讨论这一话题。但测试替身并不是行业中编写自动化测试的仅有工具。
行业中最基本的工具或许就是测试框架了,比如JUnit。我仍然记得最初如愿以偿地让代码工作起来的时光。每当程序出错卡住了,我就会取消好几条语句用于向控制台输出,然后重启程序,这样我就能通过分析控制台输出来找出失败的位置和原因。
职业生涯最初几个月,我见到商用软件开发者也在用同样的方式工作。与利用JUnit之类的工具编写自动化、可重复的测试相比,我相信我不用指出那样做有多浪费和多不专业。
除了合适的测试框架和测试替身之外,在编写自动化测试的前三样工具中还包括另一种——构建工具。无论你的构建过程是怎样的,构建脚本中用到哪种工具或技术,都没理由不将自动化测试集成到构建中。