テスト駆動開発入門読了
- 作者: ケントベック,Kent Beck,長瀬嘉秀,テクノロジックアート
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2003/09
- メディア: 単行本
- 購入: 45人 クリック: 1,058回
- この商品を含むブログ (162件) を見る
SeasarConference2009Whiteでの和田さんのプレゼンに触発されて写経してみた。
以下メモ。
- 「レッド→グリーン→リファクタリング」を素早くやる為のEclipseショートカットキー
- 「cmd+F7」ビュー切り替え
- 「cmd+F6」エディタ切り替え
- 「alt+cmd+x t」ビューがPackageExplorerの状態でテストRun
- 仮実装
- 定数やnullを返しテストケースを早くグリーンにする。本物のコードを得るまで定数を変数で徐々に置き換える。
- 明白な実装
- 実際の実装を記述
- 三角測量
- booleanを返す場合assertTrueとassertFalseでテスト、加算の場合assertEquals(plus(1, 2), 3)、assertEquals(plus(3, 4), 7)でテスト。
- バリューオブジェクト(パターン)
- グリーンにする為にはコピペという大罪も許されるが、その一般化がTODOリストに追記され、それに線を引くまでは帰宅はダメ
- レッドバーの場合はテストコードを作成しない方がいいが、モデルコードはテスト無しに変更できない。保守的に進める場合はグリーンになるようレッドの原因を取り除く。定時を過ぎそうな場合はテストコードを作成してもよし
作業の粒度がイマイチはっきりしない。慣れるしかないんだろうが。
- fixture
- テスト基盤。テストの為のインスタンス変数等の環境(setUp(),tearDown())。
- 独立したテスト
- 1つのテストが失敗したら1つ、2つのテストが失敗したら2つの問題が欲しい
クラッシュテストダミー
@Test(expected=IOException.class) public void fileSystemError() { File f = new File("foo") { public boolean createNewFile() throws IOException { throw IOException; } }; saveAs(f); }
- 仮実装のメリット
- 心理的効果(グリーンで安心)
- スコープ制御(目の前の問題に集中)
- シングルトン
- そんなこと考えてる暇があったら設計を考えろ
- メソッドの移動(リファクタリング)
- メソッド内で別のオブジェクトに複数のメッセージが送信されている。
- 解放/閉鎖原則
- オブジェクトは使用に解放され、修正から閉鎖されるべきである。
- TDDは分析および設計技法である。
要するに実践あるのみね