uvu vs Vitest: 極小ランナーかフルフレームワークか?
uvuは機能が最小限の、きわめて小さく高速なテストランナーです。Vitestはモックやスナップショットやカバレッジを備えたViteベースの機能豊富なフレームワークです。
uvuは依存関係が少なく、生の速度と高速な起動に焦点を当てた極小のランナーで、最小限のAPIを持ち、組み込みのモックやスナップショットやカバレッジはありません - 必要に応じてツールを追加します。VitestはViteの設定を再利用するフルフレームワークで、Jest風のAPI、watch mode、モック、スナップショット、カバレッジを提供し、モダンなVite/TSアプリに向いています。uvuは最小限のフットプリントと速度を追求し、Vitestは機能と統合を追求します。
| uvu | Vitest | |
|---|---|---|
| サイズ / 起動 | 極小、非常に高速 | 大きめ、高速(Vite) |
| 機能 | 最小限 | モック、スナップショット、カバレッジ |
| TS / Vite | 手動セットアップ | 第一級のサポート |
| watch mode | なし | あり(HMR) |
| 最適な用途 | 小さなライブラリ、速度 | Vite/TSアプリ |
CIでは
uvuは、最小限の依存関係と可能な限り高速な起動を求め、TS、カバレッジ、モックを自分で組み込むことを受け入れる小さなライブラリに最適です。Vitestはカバレッジとスナップショットを組み込みで備えた、統合されたフル機能のランナーを求めるアプリに向いています。どちらもCIで並列化します。ミニマリズムならuvu、機能ならVitestを選びましょう。
高速化する
依存関係をキャッシュし、テストをjob間でシャーディングして全体の実行時間を短縮しましょう。どちらもCIランナー上で動作し、より高速なマネージドランナーはテスト実行と変換処理を短縮します。
結論
小さなフットプリントと高速な起動を重視する小さなライブラリを書くなら: uvu。モック、スナップショット、カバレッジ、watch modeが欲しいViteやTypeScriptのアプリを構築するなら: Vitest。ほとんどのアプリチームはVitestを選び、uvuはミニマルなライブラリやマイクロベンチマークに向いています。