「やる夫で学ぶTDD」一日目 #ytdd
triangle.setA(BigDecimal.valueOf(1)); triangle.setB(BigDecimal.valueOf(1)); triangle.setC(BigDecimal.valueOf(1));
2011-02-02 23:52:44やる夫:やらない夫・・対象のクラスがないお、頭おかしいのかお?これじゃコンパイルエラーだお。やらない夫はコンパイルもできないプログラムを書けっていうのかお?
2011-02-02 23:53:59やらない夫:テストから先に書くのがTDDなんだ。テスト対象のクラスも、メソッドもEclipseとかVisual Studioのリファクタリングやクイックフィックスとかの機能を使えば簡単に作れるぞ。
2011-02-02 23:55:58やる夫:やるおは「メモ帳」でプログラム書いていたから知らなかったお。そんな便利なツールがあるのかお。すぐ使うお。会社で申請してもらうお。
2011-02-02 23:57:05やらない夫:今回のEclipseは無料だからそんなのいらない。Visual StudioもExpressとかだったらただなので家でも勉強できるぞ。
2011-02-02 23:58:00やらない夫:いや、実装はしてもいいんだが、最も簡単な実装をしないか? とりあえず、 return true; だ
2011-02-03 00:00:12やらない夫:いや、でも今のテストケースに対しては正しい答えだろう。もっと簡単な実装ならバグも少ない。というか今のテストケースに対してはバグゼロだ。
2011-02-03 00:01:23triangle.setA(BigDecimal.valueOf(2)); triangle.setB(BigDecimal.valueOf(1)); triangle.setC(BigDecimal.valueOf(1));
2011-02-03 00:02:39やらない夫:やる夫ちゃんとテストケースを考えらえるようになってきたじゃないか。 2 1 1はまあ三角形ですらないんだけど、正三角形でないことは確かだな。
2011-02-03 00:03:35やる夫:そして、 assertFalse(triangle.isEquilateralTriangle()); これ実行すると失敗するお・・・
2011-02-03 00:04:44やらない夫:グリーンになったようだな。同じようにしてテストケースを追加して、そのたびに実装コードをテストケースを合格させるように実装する。
2011-02-03 00:06:49やる夫:1 1 1, 2 1 1, 1 2 1, 1 1 2, 最後、こうなったお。 return a.equals(b) && b.equals(c) && c.equals(a); もう大丈夫だお。
2011-02-03 00:07:57やる夫: triangle.setA(BigDecimal.ZERO); triangle.setA(BigDecimal.ZERO); triangle.setA(BigDecimal.ZERO); JDK 1.5からBigDecimal.ZEROが使えるお!
2011-02-03 00:13:07