unit test とは何か?
unit test は、単一の関数のようなコードの小さな 1 片が、システムの残りから分離された状態で正しく振る舞うことを検証します。
unit test は、健全なテストスイートの中で最も小さく、最も速く、最も数の多いテストです。コードの個々の構成要素を徹底的にチェックするため、何かが壊れたときにどこで壊れたのかが正確に分かります。各テストが小さな 1 ユニットだけをカバーしているからです。
何であるか
unit test は、単一のコードユニット、通常は 1 つの関数やメソッドを、特定の入力で実行し、その出力が期待通りであることを検証します。そのユニットを分離し、依存関係を単純な fake に置き換えることがよくあるため、テストはその特定のロジックが間違っているときにのみ失敗します。
どう機能するか
いくつかの入力を用意し (arrange)、関数を呼び出して実行し (act)、結果を検証します (assert)。テストフレームワークはそのようなテストを多数実行し、どれが合格・失敗したかを報告します。各 unit test はごくわずかしか触れないため、ミリ秒で実行され、数千のテストが数秒で実行できます。
例
A unit test for one function
test("adds tax correctly", () => {
expect(addTax(100, 0.1)).toBe(110);
});なぜ unit test がスイートを支えるか
unit test は速く、安価で、正確です。テストピラミッドは、最も速く最も局所的なフィードバックを与えるため、これらを多数持つことを推奨します。unit test が失敗したとき、原因は通常明白です。どこからでも生じ得る広範な end-to-end の失敗とは異なります。
良い unit test
- 明確で説明的な名前で、1 つのことをテストする。
- 速く、他のテストから独立して実行される。
- 実際のデータベースやネットワークを避け、ユニットを分離する。
- 問題を直接指し示すメッセージで失敗する。
重要なポイント
- unit test はコードの小さな 1 片を分離してチェックする。
- unit test は速く、数が多く、失敗を正確に特定する。
- 健全なテストスイートの広い土台を形成する。
関連ガイド
What Is Integration Testing?What is integration testing? Learn how it verifies that components work together, how it differs from unit te…
What Is End-to-End Testing?What is end-to-end testing? Learn how E2E tests verify whole user journeys through a real system, an example,…
What Is the Testing Pyramid?What is the testing pyramid? Learn how to balance many fast unit tests against fewer slow end-to-end tests, a…
What Is Automated Testing?What is automated testing? A beginner explainer on tests that run themselves, the main types, an example, why…