或者,在现实的编码中:你的断言语句可能是:assert actualResult == {'track':'foo fighters'} 。一旦生产代码(函数)被创建,编译错误被解决,404 就会消失,但实际 actualResult 返回的结果可能是像 {} 这样的空对象 。接着再将函数中的返回结果硬编码为 {‘track’:‘foo fighters’} 。
测试现在将通过(绿色!) 。代码现在显然只是临时的,但你可以得到基本的理解 。测试已正确连接到生产代码中的某个点 。从那里你可以实现实际的业务逻辑,例如,读取文件/db/调用外部 API
决定何时编写单元测试一般来说,编写单元测试有两种情况:
案例 A:你为代表简明故事的请求编写单元测试 。例如,请求可能是计算特定货币兑换所支持的国家/地区数量 。我做的第一件事是编写一个单元测试并看到它失败 。然后,我迭代地更改代码,直到单元测试通过 。
案例 B:生产中发现的一段错误代码 。此错误触发的问题需要实施修复/补丁 。回到货币兑换示例,代码运行时,用户期望在许多国家/地区使用 $USD,但该行为是错误的,目前只有一个国家/地区返回 。我做的第一件事是编写一个单元测试并看到它失败 。然后,更正我的实现代码,直到测试通过 。这不仅修复了代码并消除了错误,而且还为我提供了一个可以重复使用的单元测试,以确保这段代码保持完整 。
总结大多数程序员不使用测试驱动开发来编写代码,但他们应该这样做 。测试驱动的开发可以创建更好的容错性代码 。希望你从这篇博文中了解 TDD 的理念,并将其融入你的软件开发实践中 。
下一步请继续关注有关如何在 Node.js、Java 和 Python 中进行测试驱动开发的新博客文章 。
资源非常有帮助的书与文章Using Test-Driven Development for Microservices, Bill DoerrfeldTest-driven Java development: Invoke TDD principles for end-to-end application developmnet, 2nd Edition by Farcic, ViktorUnit testing principles, practices, and patterns, Vladimir Khorikov
经验总结扩展阅读
- 抢鲜体验 JetBrains新产品Aqua——自动化测试开发工具
- iqooneo5的开发者选项在哪里 iqooneo5怎么开启开发者选项
- 3 onps栈使用说明——tcp、udp通讯测试
- 明日方舟博士行为测试玩法介绍
- 房屋出现裂缝找物业还是开发商
- 2 onps栈使用说明——ping、域名解析等网络工具测试
- MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选
- 新房收房需要注意什么?
- 姓名配对占卜 姓名配对占卜
- Vue3 企业级优雅实战 - 组件库框架 - 3 搭建组件库开发环境
