Vitest vs uvu:フル機能 vs ミニマルな JS テスト
Vitest はフル機能で Vite ネイティブな test runner です。uvu は極めて小さく超高速な runner で、小規模プロジェクトではほとんどオーバーヘッドがありません。
Vitest は豊富な機能セット(mocking、カバレッジ、watch UI、ESM/TS をそのまま利用可能)を提供し、Vite と config を共有します。uvu は意図的にミニマルで、数キロバイト、非常に速い起動、そしてテストを書くのに十分なだけの API を持ちます。
| Vitest | uvu | |
|---|---|---|
| スコープ | フル機能(mock、カバレッジ、UI) | 最小限のコア |
| 起動オーバーヘッド | 高め(仕組みが多い) | 非常に低い |
| Vite 統合 | ネイティブ、config を共有 | なし |
| TS/ESM | 組み込み | 自前の loader を用意 |
| 最適な用途 | アプリ、大規模スイート | 小さなライブラリ、マイクロベンチマーク |
Vitest が優れている点
アプリやより大きなスイートでは、Vitest はツールを寄せ集めることなく mocking、スナップショット、カバレッジ、watch UI を提供し、Vite の config と変換(TS、JSX、エイリアス)を再利用します。ほとんどのモダンなフロントエンドおよび Node のプロジェクトにとって、実用的なデフォルトです。
uvu が優れている点
できる限り速い起動と最小の依存の重さが欲しい小さなライブラリには、uvu が優れています。インストールが最小限で、ほぼ瞬時の実行、そして小さな API を持ちます。Vitest の機能が不要な、小さなパッケージや素早いチェックで真価を発揮します。
CI では
uvu は小さなパッケージのテスト実行を瞬時のように感じさせられます。Vitest は並列化とカバレッジで大規模スイートにスケールします。runner をプロジェクトの規模に合わせましょう。小さなライブラリにはミニマルなものを、mock とカバレッジが必要になったらフル機能のものを。
結論
アプリや、mocking・カバレッジ・Vite 統合が必要なあらゆるスイートには Vitest を、起動速度と最小のフットプリントが何より重要な小さなライブラリには uvu を使いましょう。