bunfig.toml 中的 concurrentTestGlob 选项会在文件名匹配通配符模式的文件中并发运行测试。
项目结构
项目结构
配置
配置bunfig.toml,以并发运行带有“concurrent-”前缀的测试文件:
bunfig.toml
测试文件
单元测试(顺序执行)
共享状态或依赖执行顺序的测试应保持顺序执行:tests/unit/math.test.ts
集成测试(并发执行)
匹配通配符模式的文件中的测试自动并发运行: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-前缀命名的测试文件。