パフォーマンスの改善
デフォルトでは、Vitest は pool の設定に基づいて、隔離された環境で各テストファイルを実行します。
threads
プールは、各テストファイルを個別のWorker
で実行します。forks
プールは、各テストファイルを個別の フォークされた子プロセス で実行します。vmThreads
プールは、各テストファイルを個別の VM コンテキスト で実行しますが、並列処理には worker を利用します。
この隔離処理は、テスト時間の大幅な増加につながる可能性があります。副作用に依存せず、状態を適切にクリーンアップできるプロジェクト(通常、node
環境のプロジェクトに当てはまります)では、隔離は必ずしも必要ではありません。このような場合、隔離を解除することでテスト速度を向上させることができます。隔離を解除するには、CLI で --no-isolate
フラグを指定するか、設定ファイルで test.isolate
プロパティを false
に設定します。poolMatchGlobs
を使用して複数のプールを同時に使用している場合は、特定のプールのみ隔離を解除することも可能です。
bash
vitest --no-isolate
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
isolate: false, // 隔離を解除
// 特定のプールでのみ隔離を解除することもできます
poolOptions: {
forks: {
isolate: false, // forks プールの隔離解除
},
},
},
});
TIP
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, // ファイル並列処理を無効化
},
});