概念:单元测试

对软件最小可测试单元(如函数、方法、类)进行验证的测试方法,关注单个模块的正确性而非整体流程。

解决的核心痛点:快速验证代码变更是否破坏现有功能,提供即时反馈,而非等到 E2E 阶段才发现问题。


核心命题

  • 单元测试的核心价值是「速度」——毫秒级反馈,快速定位问题
  • 好的单元测试是「行为验证」而非「实现验证」
  • 单元测试覆盖率不是目标,可维护的测试才是

测试金字塔

flowchart TB
    A[单元测试] --> B[集成测试]
    B --> C[E2E 测试]

    style A fill:#e8f5e9
    style B fill:#fff3e0
    style C fill:#fce4ec
层级范围速度数量
单元测试单一函数/模块毫秒级大量
集成测试模块间交互秒级中量
E2E 测试完整用户路径十秒级少量

单元测试 vs E2E

维度单元测试E2E 测试
范围单一函数/模块整个应用
速度毫秒级秒级
维护成本
失败定位精确模糊
适用场景逻辑验证、回归防护关键路径验证

核心原则:FIRST

原则说明
Fast测试执行速度快
Independent测试间相互独立
Repeatable结果可重复
Self-Validating自动判断通过/失败
Timely与代码同步编写

常用工具

工具框架说明
VitestVite 原生现代 JavaScript 测试框架
JestFacebook老牌测试框架
Mocha-灵活可扩展
Jasmine-BDD 风格

常见问题

  • 过度 mock:mock 过多导致测试无意义
  • 测试实现而非行为:过度依赖内部实现细节
  • 追求 100% 覆盖率:维护成本高,收益低

知识图谱


参考延伸