平行化
檔案平行化
預設情況下,Vitest 會平行執行「測試檔案」。根據指定的 pool
設定,Vitest 會採用不同的機制來平行化測試檔案:
「子程序」和「工作執行緒」統稱為「工作者」。您可以使用 minWorkers
和 maxWorkers
選項來設定執行中的工作者數量,或透過 poolOptions
進行更細緻的控制。
如果您有大量的測試,通常平行執行會更快,但這也取決於專案、環境以及 隔離 狀態。若要停用檔案平行化,您可以將 fileParallelism
設定為 false
。要了解更多可能的效能提升,請閱讀 效能指南。
測試平行化
與「測試檔案」不同,Vitest 會依序執行單一「測試檔案」中的「測試」。這表示在同一個測試檔案內的測試將按照它們定義的順序執行。
Vitest 支援 concurrent
選項以同時執行測試。如果設定此選項,Vitest 會將相同「檔案」中的並行測試進行分組(同時執行的測試數量取決於 maxConcurrency
選項),並透過 Promise.all
執行。
Vitest 不會執行任何智慧分析,也不會建立額外的工作者來執行這些測試。這表示只有當您大量依賴非同步操作時,測試的效能才會有所提升。例如,即使指定了 concurrent
選項,以下這些測試仍會依序執行,因為它們是同步的:
ts
test.concurrent('the first test', () => {
expect(1).toBe(1);
});
test.concurrent('the second test', () => {
expect(2).toBe(2);
});
若您希望同時執行所有測試,可以將 sequence.concurrent
選項設定為 true
。