Jest と NodeJS 標準の node:test との違いとは?

記事内に広告が含まれています。

Jestnode:test はどちらも JavaScript / TypeScript のテストを実行するための仕組みですが、
目的・機能・設計思想が大きく異なります。

以下に、比較表+解説で整理します👇


🧭 概要比較

項目🧪 Jest⚙️ Node.js 標準 node:test
提供元Meta(Facebook)製の独立したテストフレームワークNode.js コアに標準搭載(v18 以降)
対応環境Node.js / Babel / TypeScript / React など幅広い純粋な Node.js 実行環境
インストールnpm i -D jest が必要Node.js 標準モジュール(追加不要)
実行コマンドnpx jestnode --test
モジュールimport { test, expect } from '@jest/globals'import test from 'node:test'assert使用
Mock / SpyJest 独自の jest.fn(), jest.mock() あり手動実装(モック機能は非搭載)
Snapshot テスト✅ あり❌ なし
Watchモード✅ あり (jest --watch)❌ なし
並列実行✅ デフォルトでスレッドプールを使用✅ Worker Threads ベースでサポート
カバレッジ計測✅ 内蔵(--coverage❌ 外部ツール(例:c8)が必要
TypeScript サポートts-jestbabel-jest 経由で可能⚙️ Node の --loader tsx などを使えば可能
主な用途アプリケーション・React・UIコンポーネントテスト軽量なユニットテスト・CIスクリプト向け
実行速度やや遅い(機能が多い)非常に高速(シンプル)

🧩 コード比較

🧪 Jest 版

import { sum } from "./sum";

test("adds 1 + 2 to equal 3", () => {
  expect(sum(1, 2)).toBe(3);
});

⚙️ Node.js 標準 node:test 版

import test from "node:test";
import assert from "node:assert/strict";
import { sum } from "./sum.js";

test("adds 1 + 2 to equal 3", () => {
  assert.equal(sum(1, 2), 3);
});

実行コマンド:

node --test

⚡ どちらを選ぶべきか

用途推奨
大規模アプリ / React / TypeScript プロジェクトJest
小規模スクリプトや CLI / Node ライブラリ開発node:test
テストの実行速度・依存削減を優先node:test が有利
スナップショット・モック・ウォッチが必要Jest 一択

🧠 開発者視点のまとめ

  • node:testPython の unittest や Go の testing パッケージに近い
    → 標準軽量・依存ゼロでシンプルなユニットテストが書ける
  • Jest開発体験重視の高機能フレームワーク
    → Mock・Snapshot・Watch・並列化・TypeScript統合まで全部入り

✅ 結論

目的おすすめ
Node.js ライブラリや軽量ツールのテスト🟢 node:test
Webアプリ・React・複雑な依存関係を持つシステム🧪 Jest
テスト文化を導入したいチーム🧪 Jest
CI/CD や SDK の軽量テスト⚙️ node:test
タイトルとURLをコピーしました