并行
文件并行
默认情况下,Vitest 会并行运行测试文件。根据指定的 pool
类型,Vitest 使用不同的机制来并行处理测试文件:
“子进程”和“工作线程”统称为“worker”(工作进程或线程)。你可以使用 minWorkers
和 maxWorkers
选项来配置运行的 worker 数量,或者通过 poolOptions
进行更精细的控制。
如果你的测试用例很多,并行运行通常会更快,但这还取决于项目、环境和隔离状态。要禁用文件并行,你可以将 fileParallelism
设置为 false
。要了解更多可能的性能改进,请阅读性能指南。
测试并行
与测试文件不同,Vitest 默认会依次运行单个测试文件中的测试。这意味着单个测试文件中的测试将按照它们定义的顺序执行。
Vitest 支持 concurrent
选项,用于同时运行测试。如果设置了此选项,Vitest 会将同一文件中的并发测试进行分组(同时运行的测试数量取决于 maxConcurrency
选项),并使用 Promise.all
来运行它们。
Vitest 不会进行任何智能优化,也不会创建额外的 worker 来运行这些测试。这意味着只有当你大量依赖异步操作时,测试性能才能得到提升。例如,即使指定了 concurrent
选项,以下测试仍将一个接一个地运行,因为它们是同步的:
ts
test.concurrent('the first test', () => {
expect(1).toBe(1);
});
test.concurrent('the second test', () => {
expect(2).toBe(2);
});
如果你希望并发运行所有测试,可以将 sequence.concurrent
选项设置为 true
。