「やる夫で学ぶTDD」一日目 #ytdd
やる夫:テストコードが間違っていたお。手抜きでコピー過ぎたお。正しいのは、 triangle.setA(BigDecimal.ZERO); triangle.setB(BigDecimal.ZERO); triangle.setC(BigDecimal.ZERO);
2011-02-03 00:23:23やる夫:assertFalse(triangle.isEquilateralTriangle()); レッドになったお・・・修正が必要ってことかお
2011-02-03 00:25:43やる夫:return a.compareTo(BigDecimal.ZERO) == 1 && b.compareTo(BigDecimal.ZERO) == 1 && c.compareTo(BigDecimal.ZERO) == 1 を左に付けたしたお!
2011-02-03 00:30:45やらない夫:ちょっと一気にやりすぎた感はあるが、テストケースは成功だな。副作用がないか、全テストケースを実行してみよう。これもグリーンだ。いいだろう。
2011-02-03 00:31:48失敗してほしいテストが合格したからですw RT @softest: @oota_ken このテストコードの誤りはどうやって見つけたんでしょうか?
2011-02-03 00:33:21やる夫:triangle.setA(null); triangle.setB(BigDecimal.valueOf(1)); triangle.setC(BigDecimal.valueOf(1));
2011-02-03 00:37:06やる夫:assertFalse(triangle.isEquilateralTriangle()); こうかお。実行!
2011-02-03 00:37:25やる夫:ヌルポで落ちたおおおおおおおおおお これがテストで出ると、いつも鬼畜王ランス14 おっぱいがいっぱいプロジェクトの人はかんかんだおー 前、やる夫のクラスで出て殴られたお
2011-02-03 00:38:51やらない夫:ちょっと一気にやりすぎだ。まあいい、 1 null 1, 1 1 nullのテストケースも追加しておけよ。これは仕様から見たテストと構造からみたテストの両方の観点からで追加が必要だ。充粋なTDDの場合仕様から見て追加するな。
2011-02-03 00:41:42やらない夫:今回やる夫は一気に実装コードを追加しすぎたので、その場合、構造を見て構造のカバレッジを取るとという観点で、1 null 1, 1 1 nullを追加することになる。
2011-02-03 00:42:53やらない夫:そうだな。最初のいくつかの条件式は、正三角形の条件というより三角形や辺としての前提条件だな。りふぁくタイリングの機能を使って、条件式の一部をメソッドとして切り出そう。
2011-02-03 00:44:20やる夫:とすると 本体は return preCondition() && a.equals(b) && b.equals(c) && c.equals(a); な感じでシンプルになる。
2011-02-03 00:45:42やる夫:もちろんここで全テストを再実行するんだお。リファクタリングしたら必ず壊れてないことを確かめるために再実行するんだお。
2011-02-03 00:46:44やらない夫:全合格だな。 privateになった条件式は a != null && b != null && c != null &&
2011-02-03 00:47:22やらない夫:a.compareTo(BigDecimal.ZERO) == 1 && b.compareTo(BigDecimal.ZERO) == 1 && c.compareTo(BigDecimal.ZERO) == 1
2011-02-03 00:47:38