テスト駆動開発メモ
テスト駆動開発の目的
動作する綺麗なコードを書く事。
テスト駆動開発のサイクル
1. システムが達成したい機能の目的をイメージする。
例えば、システムで多国籍通貨をレポートさせたい
という目的をイメージする。
2. その目的を達成する為の振る舞いを考える。思いついた振る舞いはTODOリストに加える。
例えば、5$ + 10CHF = 10$ という計算が出来る事と 5$ * 2 = 10$ が出来る事。
3. TODOリストから1つの条件を選び、そのインターフェースの操作をテストコードに書く。
例えば、5$ * 2 = 10$であれば、
public class MoneyTest { @Test void testMultiplication() { Dollar five = new Dollar(5); five.times(2); assertEquals(10, five.amount); } }
4. 次の3つの実装方法のどちらかにより実装を少しずつ進める。
- 仮実装
- 明白な実装
- 三角測量
5. 重複を排除する。
着目するのは、下記の2つ - コードの重複 - データの重複
6. 条件を達成したTODOリストに取消線を引く。
ここまでで1つのサイクルが終了する。
上記3に戻る。
備考
上記1 ~ 5のサイクル内で仮実装やリファクタリングするべき点は、現れる度にTODOリストに加える。
課題を見つけたらすぐにその課題解決にとりかかるのではなく、TODOリストに加え、現時点でのサイクルを回す事に関心を置く。
仮実装と明白な実装と三角測量
仮実装
仮実装とは、ベタ書きの値を使って、テストコードがすぐにグリーンになるようにする実装である。→ 例
仮実装を行なった後は下記の手順で実装を良い方向に変更していく。
1.