Skip to content

性能优化

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

  • threads 池在单独的 Worker 中运行每个测试文件
  • forks 池在单独的 forked child process 中运行每个测试文件
  • vmThreads 池在单独的 VM context 中运行每个测试文件,但它并行工作

这大大增加了测试时间,这对于不依赖副作用并正确清理其状态的项目来说可能是不可取的(对于具有 node 环境的项目来说通常是这样)。在这种情况下,禁用隔离将提高测试的速度。要做到这一点,你可以向 CLI 提供 --no-isolate 标志,或者将 config 中的test.isolate 属性设置为 false。如果你使用 poolMatchGlobs 同时使用多个池,你还可以禁用正在使用的特定池的隔离。

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

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

Released under the MIT License.