并行性
文件并行性
默认情况下,Vitest 会并行运行 测试文件。根据指定的 pool,Vitest 使用不同的机制来并行化测试文件:
“子进程”和“工作线程”都被称为“工作器”。你可以使用 maxWorkers 选项配置运行工作器的数量。
如果你有很多测试,通常并行运行它们会更快,但这也取决于项目、环境和 隔离 状态。要禁用文件并行化,你可以将 fileParallelism 设置为 false。要了解有关可能的性能改进的更多信息,请阅读 性能指南。
测试并行性
与 测试文件 不同,Vitest 按顺序运行 测试。这意味着单个测试文件内的测试将按定义顺序运行。
Vitest 支持 concurrent 选项来一起运行测试。如果设置了此选项,Vitest 会将同一 文件 中的并发测试分组(同时运行的测试数量取决于 maxConcurrency 选项),并使用 Promise.all 运行它们。
单个组内的钩子执行顺序也由 sequence.hooks 控制。使用 sequence.hooks: 'parallel' 时,执行受相同的 maxConcurrency 限制约束。
Vitest 不执行任何智能分析,也不会创建额外的工作器来运行这些测试。这意味着只有当你严重依赖异步操作时,测试性能才会提高。例如,即使指定了 concurrent 选项,这些测试仍将一个接一个地运行。这是因为它们是同步的:
ts
test.concurrent('the first test', () => {
expect(1).toBe(1)
})
test.concurrent('the second test', () => {
expect(2).toBe(2)
})如果你希望并发运行所有测试,可以将 sequence.concurrent 选项设置为 true。
