Skip to content

remore/StudyTDD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

* Written in Japanese. Ask @remore if you need an explanation in English.

----------------------------------------------------
■課題1:テストケース作成演習
----------------------------------------------------
ケントベック著「テスト駆動開発入門」 p193の以下の演習問題を写経します。
「三角形の各辺の長さを表す整数を入力として、以下の値を返す関数を作りたい。
 ・正三角形の場合は1
 ・二等辺三角形の場合は2
 ・不等辺三角形の場合は3
 そして、各辺が三角形を形成しない場合は例外を起こす」

下記の順で実装を進めてください。

1、関数IsTriangularを宣言し、処理が空の関数を作成してください。(3分程度)
  (戻り値は一旦仮で定数を返しておきましょう)

2、テストリストを書いてください。(7分程度)
 例)正三角形の場合⇒0, 0, 0と1,1,1を入力、
   二等辺三角形の場合のテスト⇒2,2,1を入力、1,2,2を入力、、、

3、2で作成したテストを、以下の3種類に分類してください。(1分程度)
  a) 実装方法が明白なテスト項目
  b) 実装方法が不明なテスト項目
  c) 実装がたぶんできるテスト項目

4、3で分類したcの項目を優先して、テストコードを書き、
  実装、その後リファクタリング、というサイクルを回して実装を進めてください。
  ※テストコードの書き方に迷ったら、
   http://rimuru.lunanet.gr.jp/notes/post/2882/
   も参考にしてください。

※practice1フォルダに保存してあるソースコードは、
 PHPUnit3で動作確認したものです

----------------------------------------------------
■課題2:SimpleTestとMVCモデルを使ったリファクタリング演習
----------------------------------------------------
下記フォルダ構成のオレオレフレームワークがあります。
controller.phpには重複したコードがあります。

  nijidemo
   ∟ controller.php		: コントローラを記述します
   ∟ index.php				: エントリポイント
   ∟ model.php				: モデルを記述します
   ∟ test.php				: テストを記述します
   ∟ view.php				: viewsフォルダの中身を呼び出す
   ∟ simpletest
   |    ∟(SimpleTest 1.0.1の中身)
   ∟ views
        ∟ getlist.html		:http://localhost/nijidemo/index.php?action=getlist で呼び出す対象のviewファイル
        ∟ getdetail.html	:http://localhost/nijidemo/index.php?action=getdetail で呼び出す対象のviewファイル

テストコードを作成しながら、controller.phpに記載されている重複したコードを
リファクタリングし、model.phpに記述されているDataSourceクラスのread()メソッドを修正してください。
(リファクタリングの仕方によっては、read()メソッド以外のクラスやメソッドも用意することになると思います。)

手順は、課題1と同様にテストリストの作成から
(厳密にはreadメソッドがとるべき引数の検討から)
始めてください。

----------------------------------------------------

About

TDD practice materials designed for #actinagile workshop held on June 16th, 2011

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published