bunfig.toml 中的 concurrentTestGlob 选项可使文件名匹配 glob 模式的文件中的测试并发运行。
项目结构
项目结构
配置
配置bunfig.toml 以使带有 “concurrent-” 前缀的测试文件并发运行:
bunfig.toml
测试文件
单元测试(顺序执行)
共享状态或依赖于执行顺序的测试应保持顺序执行:tests/unit/math.test.ts
集成测试(并发执行)
匹配 glob 模式的文件中的测试会自动并发运行:tests/integration/concurrent-api.test.ts
运行测试
terminal
优势
- 逐步迁移:一次重命名一个文件,将其迁移到并发执行
- 清晰组织:文件名告诉你文件的测试如何运行
- 性能:独立的集成测试并行完成更快
- 安全性:单元测试在需要时保持顺序执行
迁移策略
要将现有测试迁移到并发执行:- 从独立的集成测试开始 - 这些通常不共享状态
- 重命名文件以匹配 glob 模式:
mv api.test.ts concurrent-api.test.ts - 运行
bun test- 检查竞态条件和不可靠或不期望的失败 - 逐个继续迁移稳定的测试
提示
- 使用描述性的前缀:
concurrent-、parallel-、async- - 将相关的顺序测试放在同一目录中
- 用注释说明为什么某些测试必须保持顺序执行
- 在顺序文件中使用
test.concurrent()进行细粒度控制 (在concurrentTestGlob匹配的文件中,普通的test()已经并发运行)
多个模式
concurrentTestGlob 也支持多个模式:
bunfig.toml
integration/目录中的所有测试e2e/目录中的所有测试- 项目中任何位置带有
concurrent-前缀的所有测试