跳至内容

提升性能

默认情况下,Vitest 在基于 的隔离环境中运行每个测试文件。

  • threads 池在单独的 Worker 中运行每个测试文件。
  • forks 池在单独的 派生子进程 中运行每个测试文件。
  • vmThreads 池在单独的 VM 上下文 中运行每个测试文件,但它使用工作线程进行并行处理。

这极大地增加了测试时间,对于不依赖副作用并正确清理其状态的项目(通常适用于使用 node 环境的项目)来说可能并不理想。在这种情况下,禁用隔离将提高测试速度。为此,您可以向 CLI 提供 --no-isolate 标志,或将配置中的 test.isolate 属性设置为 false。如果您同时使用多个池并使用 poolMatchGlobs,您也可以禁用正在使用的特定池的隔离。

bash
vitest --no-isolate
ts
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-parallelism
ts
import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    fileParallelism: false,
  },
})