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