从零实现一个测试框架:Hope 项目实践记录
从零实现一个测试框架:Hope 项目实践记录 缘起 为什么要自己实现一个测试框架? 阅读了 《重新造轮子系列(一):单元测试框架》。这个项目是这个文章的实践,因为本人也用过 Jest 和 Mocha ,了解这两个测试框架的功能,所以尝试自己实现一个新的测试框架,并没有解决其他痛点,为了学习 js 代码和CLI架构。 项目目录结构概览 hope-test/ ├── src/ │ ├── hope.ts // 核心测试框架实现 │ └── pray.ts // 命令行工具层 ├── tests/ // 测试用例 ├── package.json hope.ts: 测试框架核心,负责测试注册、钩子执行、断言、错误分类等逻辑 pray.ts: CLI 入口,负责参数解析、结果展示、报告生成 核心设计理念 Hope 类 核心属性包括: suites:完整的测试套件树结构 currentSuite:当前正在注册的套件 passes / fails / errors:执行结果分类 测试注册机制 测试文件中注册用例的基本形式如下: import { test } from '../src/hope'; test('my first test', () => { // some logic }); 这些注册代码在“加载模块瞬间”即被执行,Hope 会将测试信息注册到 currentSuite.tests 中。 套件嵌套与树结构 describe('Suite A', () => { test('Test A1', () => {}); describe('Suite B', () => { test('Test B1', () => {}); }); }); 此结构最终构成一个树: ...