Presentation is loading. Please wait.

Presentation is loading. Please wait.

Test-Driven Development using FIT 北野 弘治 オブジェクト倶楽部.

Similar presentations


Presentation on theme: "Test-Driven Development using FIT 北野 弘治 オブジェクト倶楽部."— Presentation transcript:

1 Test-Driven Development using FIT 北野 弘治 オブジェクト倶楽部

2 この資料について この資料は、 Agile Development Conference 2003 において、 Ward Cunningham 氏が行っ たチュートリアル資料を参考に北野弘治が翻 訳追記を行って作成しております。

3 Test-Driven Development このチュートリアルは、 FIT(Framework for Integrated Test) を利用したテスト駆動開発 のテクニックについて紹介する FIT とは、ユニットテストや受け入れテスト を行うためのフレームワークであり、プログ ラミング言語に依存しない形式でテストの記 述が行える

4 Guide Development FIT は、テストの結果が正しくなるようにプログラミ ングをガイドします いわば、標識を確認しながら道をすすんでいくようなイ メージ

5 Refactoring TDD をすることにより、 Test-Driven-Design が得られ、それは Refactoring された奇麗なデ ザインとなる テストしやすいデザイン

6 FIT FIT は、言語に依存していない test-table と言 語に依存した test-fixture とで構成されている Test-table は、ユーザや顧客でも容易に記述する ことが可能 Test-fixture は、製品と test-table とのインターフェ イスである

7 FIT をより美味く召し上がるため に FITNESSE を利用する FITNESSE とは、 FIT + Wiki で、 Wiki 上でテストの 記述、テスト実行、テスト結果参照が行える ダウンロード後、解凍のみで Wiki サーバが立ち上 がるためインストールが容易

8 Install FIT ( NESSE )

9 FITNESSE をダウンロード http://fitnesse.org/ よりダウンロードする http://fitnesse.org/ 実際には、 sourceforge にある 最新は v20030728 版 Fitnesse20030728.zip (バイナリ) Fitnesse_src20030728.zip (ソース) ここではバイナリをダウンロード

10 FITNESSE の設定 ダウンロードしたファイ ルを Zip 解凍する。 Java が入っている PC は、 解凍後の run.bat を実行す る Java は http://java.sun.com/ からダウンロード http://java.sun.com/ http://localhost/ にアクセ ス http://localhost/

11 Fit Tasks

12 FIT: Test 30/360 Calendar 金融機関のいくつかは、1ヶ月を30日、1 年を360日として扱っている ( 30/360Calendar とする) 30/360Calendar として日付計算をするテスト を記述する カラムとしては、 form, to, days() days() は from から to までの経過日数を int とし て返す ColumnFixture のサブクラスとして実装する こと 次のページにあるテストをパスすること

13 FIT: Test 30/360 Calendar fitsample.ThirtyThreeSixty fromtodays() 2001/01/102001/01/2010 2001/01/102001/02/1030 2001/01/102002/01/10360 2001/01/102002/12/25705

14 FIT: 1. create new page 30/360 カレンダーのテストを 記述するため、 Wiki 上に新し いページを作成します。 http://localhost/ FrontPage にお いて、 [Edit] をクリックし、 FrontPage を編集モードにしま す。 http://localhost/ 最後の行に 『 ThirtyThreeSixty 』と書き、 [Save] します。 FrontPage の 『 ThirtyThreeSixty 』の所の 『?』をクリックすると、新 しいページが作成されます。

15 FIT: 2. Edit Test 新たに作成した、 ThirtyThreeSixty ページの [Edit] を クリックし、テストを記述し、 Save します。 ここでは、テストの記述を行っています。 一行目に指定するのは、テスト対象の Fixture クラス です。 |ThirtyThreeSixty| |from|to|days()| |2001/01/10|2001/01/20|10| |2001/01/10|2001/02/10|30| |2001/01/10|2002/12/25|705| ---- ClassPath

16 FIT: 3. Config Test ThirtyThreeSixty ページの [Properties] をクリッ クし、 [Test] にチェックし、 [Save] します。

17 FIT: 4. Add ClassPath テスト実行に必要なクラスパスを編集します。 ThirtyThreeSixty ページの ClassPath をクリッ クし、 Classpath ページの [Edit] を実行します。 [Save] をし、 FrontPage より ThirtyThreeSixty ページに戻ります。 !path fit.jar !path fitnesse.jar !path sample

18 FIT: 5. Run Test 一度テストを走らせて みましょう。 テスト対象のクラス (ThirtyThreeSixty クラ ス)がないというメッ セージがでます。 → (ガイド) ThirtyThreeSixty クラス を作れ!!

19 FIT: 6. Create new class ThirtyThreeSixty クラスを作成します。 fitnesse/sample/fitsample フォルダに ThirtyThreeSixty.java として保存し、コンパイルします。 package fitsample; import fit.ColumnFixture; public class ThirtyThreeSixty extends ColumnFixture{ } > javac -classpath fit.jar -d sample sample\fitsample\*.java

20 FIT: 7. Re Run Test

21 FIT: 8. Create from-to Field from, to フィールドが無い!というエラー メッセージが出たので、 ThirtyThreeSixty ク ラスに追加します。 保存し、コンパイルします。 package fitsample; import fit.ColumnFixture; import java.util.Date; public class ThirtyThreeSixty extends ColumnFixture{ public Date from; public Date to; }

22 FIT: 9 Re-Re Run Test 再びテストを実行しま す。 days() メソッドが無 い!とエラーメッセー ジが出ています。

23 FIT: 10. Create days() Method days() メソッドを実装します。今の段階では、 return 0; とし、コンパイルが通る最小限の実 装とします。 Save しコンパイルします。 package fitsample; import fit.ColumnFixture; import java.util.Date; public class ThirtyThreeSixty extends ColumnFixture{ public Date from; public Date to; public int days() { return 0; }

24 FIT: 11. Re Re Re Run Test 再度テストを実行しま す。 赤になっている部分が テストが失敗している 部分となる。 全て期待している値と異 なる(今は単に 0 を返す ため)ため赤の表示にな る。

25 FIT: 12. Fake IT テストの一つのみに注目し、そのテストが通 る最小のコードを実装してみる。『 return 10; 』とする。 Save しコンパイルする。 package fitsample; import fit.ColumnFixture; import java.util.Date; public class ThirtyThreeSixty extends ColumnFixture{ public Date from; public Date to; public int days() { return 10; }

26 FIT: 13. RE^4 Run Test 再びテストを実行して みる。 緑になっている部分がテ ストが成功している部分

27 FIT: 14. Implementation 今までのように、細か い周期で実装 → テスト → 実装 → テストをして 全てのテストを通るよ うにしてみましょう。

28 考察 actualDays() を追加し、テストしてみましょ う。 オブジェクト指向の観点から考え、クラス分 割してみましょう。 FIT の ColumnFixture クラスの特徴について調 べてみましょう。


Download ppt "Test-Driven Development using FIT 北野 弘治 オブジェクト倶楽部."

Similar presentations


Ads by Google