提升性能
默认情况下,Vitest 基于 pool 在隔离的环境中运行每个测试文件:
threads
pool 在独立的Worker
中运行每个测试文件。forks
pool 在独立的 派生子进程 中运行每个测试文件。vmThreads
pool 在独立的 虚拟机上下文 中运行每个测试文件,但它使用 worker 来实现并行。
这种隔离机制会显著增加测试时间。对于那些不依赖副作用、并且能正确清理状态的项目(通常 node
环境的项目都是如此),这可能不是期望的行为。在这种情况下,禁用隔离可以提升测试速度。为此,您可以在 CLI 中使用 --no-isolate
标志,或者在配置中将 test.isolate
属性设置为 false
。如果您同时使用多个通过 poolMatchGlobs
定义的 pool,也可以为特定 pool 禁用隔离。
bash
vitest --no-isolate
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
isolate: false,
// 也可以仅为特定的 pool 禁用隔离
poolOptions: {
forks: {
isolate: false,
},
},
},
});
TIP
如果您正在使用 vmThreads
pool,则无法禁用隔离。请使用 threads
pool 来提高测试性能。
对于某些项目,禁用并行执行也能缩短启动时间。为此,请在 CLI 中使用 --no-file-parallelism
标志,或者在配置中将 test.fileParallelism
属性设置为 false
。
bash
vitest --no-file-parallelism
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
fileParallelism: false,
},
});