Skip to content

单元测试(又称为模块测试)是针对 "程序模块" 来进行 "正确性检验" 的测试工作

License

Notifications You must be signed in to change notification settings

Gnotes/unit-testing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub forks GitHub stars GitHub

Unit Testing 单元测试

单元测试(又称为模块测试)是针对 程序模块 来进行 正确性检验 的测试工作

除此外,测试通常分为: 单元测试(Unit Testing) 和 功能测试(Functional Testing),复杂大型应用可能会有集成测试(Integration Testing) 以及性能测试(Performance Testing)

单元测试:关注应用中每个零部件的正常运转,防止后续修改影响之前的组件
功能测试:确保其整体表现符合预期,关注能否让用户正常使用
整合测试:确保单独运行正常的零部件整合到一起之后依然能正常运行

TDD and BDD

  • TDD Test Driven Development: 测试驱动开发
  • BDD Behavior Driven Development: 行为驱动开发

从开发模式来区分的话

TDD -> 先写测试用例,暂时不考虑优化的前提下,编写符合用例规范的功能实现,在代码编写完成后再进行重构

BDD -> BDD 是以 `TDD` 为基础,通过对行为的描述来确认功能的可用性,一般 BDD 测试用例有 `GWT`的结构,即: `GIVEN` `WHEN` `THEN`,在阅读的时候看起来像是读一篇完整流畅的文档

以阶乘函数 factorial 示例:

// TDD
test("equals 1 for sets of zero length", function() {
  assert.equal(1, factorial(0));
});

test("equals 1 for sets of length one", function() {
  assert.equal(1, factorial(1));
});

// BDD
describe("#factorial()", function() {
  it("should return 1 when given 0", function() {
    factorial(0).should.equal(1);
  });

  it("should return 1 when given 1", function() {
    factorial(1).should.equal(1);
  });
});

有没有明显的感觉 BDD 格式更符合人类阅读的习惯,但这并不是说 BDD 就优于 TDD,他们在不同的层级上哈。更多查看 TDD 和 BDD 的区别

单元测试框架

单元测试应该 简单 快速执行清晰的错误报告,因此一个合适的测试框架就尤为重要。

测试框架基本流程包括:

 描述要测试的代码
 测试这段代码
 判断是否符合预期
名称 是否提供测试框架 提供断言 断言风格 展示测试结果 快照测试 提供仿真 覆盖率测试报告 推荐
QUnit C X X X
Jasmine Expect X X ☆☆
Mocha X - X X X ☆☆
Jest Expect X ☆☆☆☆
Chai X BDD / TDD X X X X ☆☆
Expect X Expect X X X X
Unexpected X BDD+Expect X X X X
Should X BDD X X X X
Assert X C X X X X
Enzyme - - - - - - ☆☆☆☆
@vue/test-utils - - - - - - ☆☆☆☆
Istanbul - - - - - - ☆☆☆☆

参考

About

单元测试(又称为模块测试)是针对 "程序模块" 来进行 "正确性检验" 的测试工作

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages