什么是单元测试?

对软件中的最小可测试单元进行测试
对组成项目的方法进行一个一个测试
组成软件功能和系统的方法是否达到预期目标。

为什么要用单元测试
  1. 分模块开发,方便的定位到哪个单元出了问题。(单个模块,单个处理,对每一个模块都进行测试)
  2. 保证了代码质量 (减少问题发生的概率)
  3. 驱动开发(测试先行)
单元测试的两种类型

1:TDD
测试驱动开发,从需求角度看。 即我需要的结果是什么,如果不是就是错误的。

执行步骤:
需求分析> 编写单元测试>编写代码使单元测试通过 > 重构

2: BDD
行为驱动开发,从具体功能角度出发。即看结果是什么,如果不是什么就是出错

执行步骤:
从业务角度定义目标> 找到实现目标到的方式> 编写单元测试> 实现行为> 检查产品

测试原则
  1. 及时修改和维护(随着需求和业务的变动而改变测试代码)
  2. Code Review (审查代码是否实现所预期,逻辑是否正确。代码是否简单易懂。是否符合团队规范。)(Code Review延伸:同步code review: 即写完代码后立即进行代码审查; 异步code review: 借助工具进行代码审查; 偶尔code review: 会议式的代码审查)
  3. 只测单一的点(例如屏蔽掉一个方法中的其他方法的调用)
  4. 尽量贴近真实
  5. 避免测试中逻辑过于复杂
单元测试的核心内容
  1. 测试框架 (运行执行方法)
  2. 断言库(查看检查结果)
  3. Mock库(屏蔽外部依赖)
  4. Test runner
  5. 覆盖率工具(测试代码覆盖了多少行,多少方法,)
常见的测试框架
  1. Jest——基于jasmine, 自带assert和mock,对react友好。(全部集成)
  2. Jasmine——bdd风格,自带assert和mock
  3. Mocha——全面适合node和浏览器两个端(不带断言和mock)(自由搭配)
  4. Qunit——出自jquery,后来独立出来
常见的断言库

Chai——支持所有风格-(比较全面)(占据市场份额60%+)
Should——
expect
Assert——node环境直接使用

Mock库

sinon

Test runner

karma

覆盖率工具

istanbul(伊斯坦布尔)

应用场景

1.vue初始化一个项目时的选项
初涉单元测试
初涉单元测试

相关文章: