单元测试学习记录
单元测试类型
- BDD
Behavior Driven Development , 行为驱动开发是一种敏捷软件开发的技术 , 它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。
BDD侧重设计 , 其描述的行为就像一个个的故事(Story),系统业务专家、开发者、测试人员一起合作,分析软件的需求 , 然后将这些需求写成一个个的故事。开发者负责填充这些故事的内容 , 测试者负责检验这些故事的结果。结合场景设置,基本就完成了一个完整测试的定义。 - TDD
Test-Driven Development , 测试驱动开发 , 它是一种测试先于编写代码的思想
TDD侧重点偏向开发,通过测试用例来规范约束开发者编写出质量更高、bug更少的代码。
前端为什么要做单元测试
- 帮助检验代码写的更规范,因为要通过测试就要求单元之间解耦,不然无法通过测试
- 已经发布了的代码有所改动,如果有单元测试,方便代码回归,省下全局相关功能再测试一遍的低效。
- 一般测试代码会先于功能代码先写。先写测试代码会考虑功能代码的实现细节,理清功能代码的实现逻辑。
哪些内容适合做单元测试
项目中的库文件,公共组件,是项目的公共引用的功能,不常被改动。一旦有改动,通过测试能及时发现问题,不会导致引用了这个公共功能的地方报错。常常有需求变动的业务代码不适合做单元测试。
学习涉及的测试框架、断言库、测试工具和CI
- mocha: 单元测试框架
- node内置的assert模块: 断言库 , TDD风格
- should.js: 断言库 , 属于BDD风格
- chai.js: 断言库 , BDD/TDD风格 , 同时支持should、 assert、expect , 有强大的插件机制
- karma: 测试工具 , 可以监控文件的变化 , 然后自行执行 , 通过浏览器控制台显示测试结果 , 能够模拟各种环境来运行你的测试代码比如Chrome, Firefox,mobile等等
- Travis CI: 提供持续集成服务(Continuous Integration,简称 CI)。通过配置绑定你github上的项目,并且配置运行环境,实现只要github上有代码更新,travis就会自动运行构建和测试,并反馈运行结果。
单元测试(一): mocha+should.js
- 准备
cd ~/desktop mkdir nodejs-test cd nodejs-test mkdir test mkdir lib
- 安装模块
npm init -y npm install mocha --save-dev npm install should --save-dev
- 编辑一下 package.json,修改一下 script 下面的 test 的值, 此处mocha为本地安装
"test": "./node_modules/mocha/bin/mocha"
- 配置mocha.opts
mocha.opts的更多配置(代替命令行参数):https://mochajs.org/#mochaopts--require should
- 添加测试用例
// test/test.js var add = require('../lib/add'); describe('大数相加add方法', function () { it('字符串"1"加上字符串"2"等于"4"', function () { add('1', '2') .should.equal('4') }) it('字符串"42329"加上字符串"21532"等于"63861"', function () { add