What?
释义
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。这里的最小可测试单元并没有一个明确的标准,在C++语言中,我们可以认为是一个接口,无论是类接口或者是全局函数。
借用《测试驱动开发》里面的设想,如果把编程看成是转动曲柄从井里面提一桶水的过程,测试程序就是一个防倒转的装置,让我们可以转一会儿休息一会儿。水桶越大,防倒转装置的棘齿就越相近。
目的
单元测试的目的是确保每个单元都能独立的正常工作,从而提升整个程序的质量、可靠性和可维护性。
设想一下,如果把编写程序类比成一个搭积木的过程,每个模块就是一个一个的小积木。在拼装积木之前,我们要保证每个积木的质量都经过了严格的测试。
测试框架
单元测试的本质其实就是通过写测试代码来测试被测试的代码。在实际执行过程中,我们可能需要很多辅助类功能,形如用例管理、用例组织、测试断言、显示测试进度、友好的测试信息输出以及其他高级的用法。
以测试一个加法函数为例:
这样我们就实现了一个最简单的测试断言。
所以测试框架只是在一定程度上封装了一系列有助于我们编写测试代码的功能和方法,提高我们编写测试代码的效率。理解了这一点,将有助于我们更好的理解和使用测试框架。
Why?
为什么要写单元测试,我们可以轻而易举的在搜索引擎或者相关专业书籍上面看到如下答案:提高代码质量和可靠性、支持代码重构、减少调试时间、提高开发效率等等,这些说法虽然正确,但未免显得过于专业和官方,缺乏一定的说服力。下面我想谈几点自己的理解。
即时反馈
问题前置
支持代码重构
代码坏味道
营地法则
改进设计
熟悉代码
How?
二八原则
Mock测试
编写时机
积木原则
拒绝源码侵入
控制用例执行时间
结语
参考书籍
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。