『Vitest が新標準』へ移行中
Vitest は Vite ベースの高速テストランナーで、Jest 互換 API を持ちつつ Node.js/ESM/Browser 全対応です。本記事では編集部の視点で、両者の使い分けを公開情報をもとに整理します。TDD 実践 もご参考に。
Vitest の特徴
(1) Vite 統合:開発と同じ設定。(2) 速度:Jest の数倍。(3) ESM ネイティブ。(4) watch mode:HMR 風の高速再実行。(5) Jest 互換 API:移行容易。
Jest の特徴
(1) 実績豊富:React/Node 等の標準。(2) 豊富な mock:jest.mock 等。(3) snapshot testing。(4) カバレッジ標準:Istanbul ベース。(5) 大規模実績:Facebook 製。
使い分けの判断
(1) Vite ベースのプロジェクト:Vitest。(2) CRA / Create-React-App:Jest 継続も可。(3) Node 純粋プロジェクト:Vitest 推奨。(4) 大規模既存 Jest:段階移行。(5) 新規プロジェクト:Vitest 一択(公開情報をもとに)。
モックの違い
(1) vi.mock vs jest.mock:API ほぼ互換。(2) auto-mock:Vitest は限定的。(3) spy:vi.spyOn / jest.spyOn 同等。(4) fake timers:両者対応。(5) msw:API モックは両方で使える。
カバレッジと CI 統合
(1) --coverage:c8 (Vitest) / Istanbul (Jest)。(2) 閾値設定:thresholds。(3) HTML レポート:両者対応。(4) Codecov 等:lcov.info 形式。(5) CI 並列化:shard 指定。CI/CD 実践 もご参考に。
E2E ・統合テストとの境界
(1) ユニット:Vitest/Jest。(2) コンポーネント:Testing Library + Vitest。(3) 統合:DB 等の依存込み。(4) E2E:Playwright。(5) 比率:ピラミッド型。Playwright 実践 もご参考に。
失敗しがちなパターン
(1) テスト実装後回し:負債化。(2) カバレッジ100%目標:意味のないテスト。(3) 過剰モック:実装変更で全壊。(4) 遅いテスト放置:CI 時間長期化。(5) flaky test 放置:信頼喪失。対策は、(1)TDD/PR必須、(2)80%目安、(3)契約テスト、(4)並列+遅いテスト分離、(5)即修正、です。