並列処理
ファイル並列処理
デフォルトでは、Vitest はテストファイルを並列で実行します。指定された pool
の種類に応じて、Vitest はテストファイルを並列実行するために異なるメカニズムを利用します。
「子プロセス」と「ワーカースレッド」は、どちらも「ワーカー」と総称されます。実行中のワーカー数は、minWorkers
および maxWorkers
オプションで設定できます。より詳細な設定は、poolOptions
で可能です。
テスト数が多い場合、通常は並列実行の方が高速ですが、これはプロジェクト、環境、および分離状態にも依存します。ファイルの並列化を無効にするには、fileParallelism
を false
に設定します。パフォーマンス改善の可能性について詳しく知るには、パフォーマンスガイドをお読みください。
テスト並列処理
テストファイルとは異なり、Vitest はテストを逐次実行します。これは、単一のテストファイル内のテストが、定義された順番で実行されることを意味します。
Vitest は、テストを並行実行するconcurrent
オプションをサポートしています。このオプションが設定されている場合、Vitest は同じファイル内の並行テストをグループ化し(同時に実行されるテストの数は maxConcurrency
オプションに依存します)、Promise.all
を使用して実行します。
Vitest は高度な分析を実行せず、これらのテストのために追加のワーカーを作成しません。これは、テストのパフォーマンスが向上するのは、非同期操作に大きく依存している場合に限られる、ということを意味します。たとえば、concurrent
オプションが指定されていても、以下の同期処理のテストは引き続き順次実行されます。
test.concurrent('the first test', () => {
expect(1).toBe(1);
});
test.concurrent('the second test', () => {
expect(2).toBe(2);
});
すべてのテストを並列実行したい場合は、sequence.concurrent
オプションを true
に設定できます。