Keep Tests Independent(テストを独立させる)
1. 原則
テストケースはそれぞれが独立していなければならない
- 各テストケースは、他のテストケースの実行順序や結果に影響されない
- 1つのテストが失敗しても、その影響が他のテストに波及しない
- 外部の状態(ファイルシステム、データベースなど)に依存しない
2. 根拠
信頼性と保守性の向上
- テストの失敗原因の特定を容易にする
- テストが独立していれば、失敗したテストケースだけを修正すればよい
- 実行順序に依存するテストは、デバッグが困難で脆弱になる
3. 指針
状態のリセットとモックの活用
- テスト実行ごとに、テスト対象のインスタンスや外部の状態を初期化する
setUp
や tearDown
メソッド(または同等の機能)を使用して、各テストの前後で環境をリセットする
- データベースや外部APIなど、外部依存がある場合はモックやスタブを用いて隔離する
4. 注意事項
テスト対象の設計
- テストの独立性を保つためには、テストしやすい設計が前提となる
- 状態を共有するシングルトンパターンやグローバル変数の使用は避ける
- 依存性の注入(Dependency Injection)を積極的に活用する