提升性能
默认情况下,Vitest 在基于 池 的隔离环境中运行每个测试文件。
threads池在单独的Worker中运行每个测试文件。forks池在单独的 派生子进程 中运行每个测试文件。vmThreads池在单独的 VM 上下文 中运行每个测试文件,但它使用工作线程进行并行处理。
这极大地增加了测试时间,对于不依赖副作用并正确清理其状态的项目(通常适用于使用 node 环境的项目)来说可能并不理想。在这种情况下,禁用隔离将提高测试速度。为此,您可以向 CLI 提供 --no-isolate 标志,或将配置中的 test.isolate 属性设置为 false。如果您同时使用多个池并使用 poolMatchGlobs,您也可以禁用正在使用的特定池的隔离。
bash
vitest --no-isolatets
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
isolate: false,
// you can also disable isolation only for specific pools
poolOptions: {
forks: {
isolate: false,
},
},
},
})提示
如果您使用的是 vmThreads 池,则无法禁用隔离。使用 threads 池来提高测试性能。
对于某些项目,禁用并行处理以提高启动时间可能也是可取的。为此,向 CLI 提供 --no-file-parallelism 标志,或将配置中的 test.fileParallelism 属性设置为 false。
bash
vitest --no-file-parallelismts
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
fileParallelism: false,
},
})