JUnit 実践入門 体系的に学ぶユニットテストの技法 - 第7章 テストフィクスチャ テストデータや前提条件のセットアップ
第7章 テストフィクスチャ テストデータや前提条件のセットアップ
7.1 テストフィクチャとは
- テストで扱う、データやテスト実行環境、オブジェクトの状態など
ユニットテストのテストフィスクチャ
- テスト対象オブジェクト
- 入力値
- 期待値
- テスト実行までに必要な、テストオブジェクトの操作
- ファイルなど外部リソース
- データベースやソケットサーバなど、外部システム
依存クラスや依存外部システムのモックオブジェクト
一般にテスト実行フェーズよりも、セットアップのコードのほうが長くなる
フレッシュフィクスチャ
- フィクスチャはテストケースごとに独立し、テスト実行ごとに初期化され、終了時に開放する → フレッシュフィクスチャ戦略
フィクスチャとスローテスト問題
- フィクスチャのセットアップに長い時間がかかること → スローテスト問題 slow tests
- DB のテーブルデータ全レコード削除とかやってるから
- テストの並列実行、共有フィクスチャ、カテゴリ化テストなどの解決策
共有フィクスチャ
- 共有フィクスチャは、スローテスト問題 shared fixture の解法の一つ
- テストケースごとの独立性が弱くなる問題
- テストコードのメンテナンス性低下。あるフィクスチャを参照しているテストケースは、全部でどれだけ??
7.2 フィクスチャのセットアップパターン
インラインセットアップ
- テストメソッドごとにフィクスチャのセットアップを行う
- コードでの見通しが良くなるが、長すぎると可読性は下がる
- 20 行がひとつの目安
暗黙的セットアップ
- Before アノテーションが付与されたメソッド(セットアップメソッド)のこと
- テストメソッド実行前に暗黙的 implicit に実行されるからね
- 各初期化処理の共通部分
- Enclosed テストランナーと相性良し
- 構造化!共通前処理!インナークラス!
生成メソッドでのセットアップ
- テストクラスをまたいで暗黙的セットアップは出来ない…
- 共通した初期化処理を独立したクラスのメソッドに抽出する 生成メソッドパターン
- staticインポートできるように、独立クラスにstaticで書くと幸せ。日本語メソッド名で内容を表示してあげるともっといいね
外部リソースからのセットアップ

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)
- 作者: 渡辺修司
- 出版社/メーカー: 技術評論社
- 発売日: 2012/11/21
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 273回
- この商品を含むブログ (65件) を見る