Skip to content

并行性

文件级并行

Vitest 默认会并行执行 测试文件 。具体使用哪种并行机制取决于配置的 pool 类型:

在文档中,“子进程”和“工作线程”统称为“工作者”。你可以通过 minWorkersmaxWorkers 参数来控制并行工作的数量,也可以通过 poolOptions 进行更详细的配置。

如果项目包含大量测试文件,通常并行执行会大幅提升速度。但具体效果还要看项目本身、运行环境以及是否启用了 隔离。若需要关闭文件级并行化,可以将 fileParallelism 设为 false 。更多性能优化技巧,请参考 性能指南

测试用例并行

测试文件 不同, Vitest 在同一个文件中会顺序执行 测试用例 。也就是说,同一个文件里的测试会按定义顺序一个接一个地执行。

如果希望让同一文件中的多个测试并行执行,可以使用 concurrent 选项。启用后, Vitest 会将同一文件中的并发测试分组,并基于 maxConcurrency 控制并行度,然后通过 Promise.all 一起执行。

Vitest 不会自动分析你的测试是否可以并行,也不会为了并发而额外创建工作者。这意味着,只有在测试中有大量异步操作时,使用并发才能提升性能。例如,以下示例即便指定了 concurrent ,也会顺序执行,因为它们是同步的:

ts
test.concurrent('the first test', () => {
  expect(1).toBe(1)
})

test.concurrent('the second test', () => {
  expect(2).toBe(2)
})

如果希望所有测试用例都并发执行,可以将 sequence.concurrent 配置项设为 true

Released under the MIT License.