性能优化
默认情况下,Vitest 在基于pool 的隔离环境中运行每个测试文件:
threads池在单独的Worker中运行每个测试文件forks池在单独的 forked child process 中运行每个测试文件vmThreads池在单独的 VM context 中运行每个测试文件,但它并行工作
这大大增加了测试时间,这对于不依赖副作用并正确清理其状态的项目来说可能是不可取的(对于具有 node 环境的项目来说通常是这样)。在这种情况下,禁用隔离将提高测试的速度。要做到这一点,你可以向 CLI 提供 --no-isolate 标志,或者将 config 中的test.isolate 属性设置为 false。如果你使用 poolMatchGlobs 同时使用多个池,你还可以禁用正在使用的特定池的隔离。
bash
vitest --no-isolatets
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
isolate: false,
// 你还可以仅对特定池禁用隔离
poolOptions: {
forks: {
isolate: false,
},
},
},
})TIP
如果使用的是 vmThreads 池,则不能禁用隔离。请改用 threads 池来提高测试性能。
对于某些项目,可能还需要禁用并行性以缩短启动时间。为此,请向 CLI 提供 --no-file-parallelism 标志,或将 config 中的test.fileParallelism属性设置为 false。
bash
vitest --no-file-parallelismts
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
fileParallelism: false,
},
})