单元测试的定义
- 单元测试(Unit Testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
- 单元测试的特点如下:
- 最小可测试部件
- 单元与单元是相互独立的
- 执行速度快
- 问题相对容易定位
- 开发人员编写
- 通过了解代码的实现逻辑进行的测试,通常也叫白盒测试
单元测试框架
javascript
mocha(推荐),jasmine,qunit(jquery出品)java
junitandroid
junit,robolectric(junit的扩展)c
cunitpython
unittest(pyunit)
测试工具和语言
我们这里选择javaScript来简单实验一些单元测试。我们选择Mocha作为我们的单元测试工具。它入门简单,能同时适用于基于浏览器的测试和 Node.js 的测试,而且与其它测试工具配合同样运行良好。
设置目录结构
为了让文件结构更清晰,应将测试文件放在主代码文件的一个独立目录下。这是为了方便以后添加其它类型的测试(如集成测试(integration tests) 和 功能测试(functional tests))。
对于 JavaScript,最流行的实践方案是在项目根目录下创建一个 test/ 文件夹。然后,将每个测试文件放置在该文件夹下,如 test/someModuleTest.js。另一种方案是,在 test/目录下,再创建文件夹。但我建议尽量保持简单——这样能保证在后面必要时进行(快速)修改。
单元测试例子
我们这里引入的chai是断言库,mocha支持多种断言库可以自由选择
更多的Mocha学习可以去阮一峰的博客或者mocha官网学习,讲的比较详细。
源码中的单元测试
我们就来看jquery的代码是怎么进行单元测试的,这里jquery是用jquery自家出品的qunit单元测试框架来进行测试的。我们先来看一些qunit框架的内容。
直接进入jquery的源码
问题
- 怎样更有效的进行单元测试
- 一定要使用单元测试框架吗
- 编写更有效的测试用例(一个测试单元几个测试用例更好)