tdd boot camp tokyo for c++ 2014-01 デモ用資料

79
TDD Boot Camp Tokyo for C++ 2014-01 デモ @imagire

Upload: takashi-imagire

Post on 19-Jun-2015

592 views

Category:

Technology


0 download

DESCRIPTION

TDD Boot Camp Tokyo for c++ 2014-01 でデモした際の課題(FizzBuzz)とそのためのVisual Studioのプロジェクトの作成方法を記した資料です

TRANSCRIPT

Page 1: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

TDD Boot Camp Tokyo for C++ 2014-01 デモ

@imagire

Page 2: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• お題説明 • 環境説明 • 作業手順

お品書き

Page 3: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• FizzBuzz – 1から100までの数字を数える

• 3でも5でも割り切れる数字の際は “Fizz Buzz” • 3で割り切れる数字の際は “Fizz” • 5で割り切れる数字の際は “Buzz” • それ以外は数字をそのまま発言

– 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16, 17, …

お題説明

Page 4: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

Microsoft 単体テストフレームワーク

アプリケーション

.exe

Page 5: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

Microsoft 単体テストフレームワーク

アプリケーション

.exe .lib

コアロジック

.dll

単体テスト プロジェクト

呼び出し

応答

応答

呼び出し

テスト対象のクラスは ライブラリとして呼び出せる形にしてテスト

Visual Studio から 呼べる!

Page 6: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 7: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• 最終出力だけを比較するのは不適当そう – 表示結果 = ” 1, 2, Fizz, 4, …, 98, Fizz, Buzz” ?

• まちがえそうもないところはテスト対象としない – 単純な固定回数の loop のカウントは優先度低

方針の検討

for (int i = 1; i <= 100; i++){ string result = FizzBuzz::Calc(i); cout << result; }

こんな関数のテストが適当そう

Page 8: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 9: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

Win32 コンソール アプリケーションの作成

Page 10: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
Page 11: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
Page 12: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 13: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
Page 14: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

ネイティブ単体テスト プロジェクトの追加

テストっぽいプロジェクト名を付けよう

Page 15: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テスト エクスプローラーを開けてみよう

Page 16: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
Page 17: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストの実行

Page 18: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストコードを編集してみる

実行されるテスト関数

実行されるテストが置かれるクラス

Page 19: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

失敗するテストコードの作成

Page 20: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

失敗してみる

Page 21: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 22: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
Page 23: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

ライブラリっぽいプロジェクト名を付けよう

Page 24: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
Page 25: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 26: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストコードを開いた状態でプロパティの設定と選択

Page 27: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

共通プロパティで参照の追加

Page 28: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストプロジェクトの参照にライブラリのプロジェクトを追加 (ライブラリが更新されるとテストのプロジェクトもビルドしなおす)

Page 29: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

構成プロパティからインクルードディレクトリの追加

この後で作成するプロジェクトのインクルードフォルダ

Page 30: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

ライブラリディレクトリも追加

Page 31: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

インクルードディレクトリの作成

Page 32: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

その中にヘッダの作成

テストされるクラスのヘッダーファイルを置く

Page 33: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

最低限の実装を行う

Page 34: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストが通るのを確認

Page 35: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

リファクタリング (実装コードをcppファイルに書く)

ライブラリプロジェクトを右クリックしてファイルの追加

Page 36: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
Page 37: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

ライブラリプロジェクトにもパスを通す

Page 38: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストプロジェクトと同じパスを追加

Page 39: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

コードを書きかえる

Page 40: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テスト結果に変更がないことを確認

Page 41: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 42: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

アプリケーションプロジェクトにも ライブラリの情報を追加

Page 43: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

ライブラリの参照の追加

Page 44: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

インクルードディレクトリの追加

Page 45: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

ライブラリの追加

Page 46: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

リンカーの入力にライブラリを追加

Page 47: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

アプリケーションコードの作成

Page 48: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

アプリケーションの実行

Page 49: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 50: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 51: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストコードの追加

Page 52: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストの失敗を確認

Page 53: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 54: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストが通る実装を行う

やりすぎかも? 3の時だけ特別な値を返すような実装を 最初はした方が良いかもね

Page 55: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストが通ることを確認

Page 56: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

アプリケーションも実行

Page 57: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 58: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 59: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストコードの追加

Page 60: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストコードの失敗の確認

Page 61: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

コードの修正

Page 62: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストが通ることの確認

Page 63: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

アプリケーションも確認

Page 64: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 65: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストコードの追加

Page 66: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストコードの失敗の確認

Page 67: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

コードの修正

Page 68: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストが通ることの確認

Page 69: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

アプリケーションも実行

Page 70: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 71: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

コードをきれいにする

Page 72: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストコードもきれいにする

Page 73: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

• アプリケーションを作成 • テストプロジェクトを追加 • ライブラリのプロジェクトを追加 • テストプロジェクトとライブラリを紐づけ • アプリケーションとライブラリを紐づけ • TDDのループを回す

– テストを書く – テストが成功するように実装 – リファクタリング

進め方

Page 74: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストコードの追加

Page 75: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

テストコードの失敗の確認

Page 76: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

コードの修正

Page 77: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

アプリケーションの確認

Page 78: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

気になるところはテスト

Page 79: TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料

気になるところまでokなら完了