知识卡片

可测试性三要素

普通读书笔记卡 · 1712.c

内容

可测试代码需要可控、可观察、可隔离。没有返回值的方法、隐藏关键状态的API和硬编码依赖都会让测试只能从缝隙里猜行为。发散:提升可测试性常常也是提升API表达力。

参考来源

- 位置:《你真的会写代码吗-2021》第6章《别对我撒谎:通过测试保证可靠性》"6.3 可测试性"及"6.3.1/6.3.2"(源文件:_epub-src/OEBPS/Text/0016.xhtml) - 结论依据:原文明确"要测试一个程序单元,需要能够为它提供输入(可控性),并观察这些输入的效果(可观察性)……正确的单元测试要求你把UUT和它原来的依赖关系隔离开来",并举connectTo缺乏公有方法检查组合并结果为可观察性差的例子。 - 原始内容:要测试一个程序单元,需要能够为它提供输入(可控性),并观察这些输入的效果(可观察性)。此外,如果被测单元(UUT)依赖于其他单元……而测试发现了一个缺陷,那么就不知道这个缺陷是属于UUT还是属于其依赖关系的……connectTo的主要作用是合并两个组,但API并没有提供任何手段来直接检查组。没有任何公有方法用于检查两个容器是否连接。