わんくま名古屋#25(20121201) tdd道場#13 ~...
Post on 19-Jun-2015
769 Views
Preview:
DESCRIPTION
TRANSCRIPT
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 1/15
TDD道場
2012年12月1日
わんくま同盟名古屋勉強会 #25
TDDやってみよう!
biac
名古屋市名古屋ソフトウェアセンター
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 2/15
自己紹介• 著書– 「速攻入門 C#」 (2012/3)
技術評論社、共著
– 「ソフトな彼女とハードな彼氏。」(2012/3) アジャイルマインドvol.1 掲載
• 記事– 連載 「C#でTDD入門」
CodeZine
– 週刊連載「WinRT/Metro Tips」@IT - .NET開発者中心…etc.
biac (山本 康彦)
BluewaterSofthttp://www.bluewatersoft.jp/
• 名古屋大学工学部(修士)• HONDA R&Dで自動車設計• 1994~ ソフトウェア業界• 2012~ BluewaterSoft
ソフトウェア開発
Windows 8 Metro Style App.Windows Phone 8…Windows系の最新技術
TDD(コーディング技法)の普及
著作
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 3/15
Test
Driven
Development
テスト駆動開発
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 4/15
TDD – テスト駆動開発
・「テスト」と言ってるけど、TDDは品質保証テストじゃない。
・「開発」と言ってるけど、TDDは開発プロセスじゃない。
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 5/15
TDDの考案者
Kent Beck の説明“Test Driven Development: By Example” (2002) より。
We drive development with automated tests,
a style of development called Test-Driven
Development (TDD).
「
」
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 6/15
具体的には?“Test Driven Development: By Example” (2002) より。
In Test-Driven Development, we・Write new code only if an automated test has failed・Eliminate duplicationThese are two simple rules.
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 7/15
Test
Driven
Development
= 自動化されたテストを使って開発を駆動するスタイル
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 8/15
大事なことなのでもう1度
「自動化されたテスト」…を作ってからコードを書くのだ。
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 9/15
本日のテーマ
•Metroスタイルアプリをテストファーストする(Windows 8)
Metro スタイル アプリ (と、かつて呼ばれていたナニカ) をテストファーストで作る時のポイントは?
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 10/15
テストツール
•VS2012 Express⇒MSTest 標準
•VS2012 有償版⇒NUnit 等も組み込み可能
Visual Studio 2012 有償版の「拡張機能と更新プログラム」ダイアログ
・上の画像では「NUnit Test Adapter」がインストールされている。Test Adapterがあれば、任意のユニットテスト フレームワークをIDEから実行できる。・ExpressにもMSTestが組み込まれた。他のユニットテスト フレームワークは、IDE外で実行する。
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 11/15
テストプロジェクト
•Metroアプリを対象にするには、専用のテストプロジェクト
・[上] Metroアプリ用の単体テストプロジェクト・[下] 一般のクラス ライブラリ用
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 12/15
Metro用テストプロジェクト
•appxmanifest などが含まれる
※ テスト対象と同じケイパビリティ設定が必要
※ テスト対象がCOMを使っているとテスト不可
Metroアプリ用の単体テストプロジェクト (Express)
マニフェスト
証明書
Metro用.NET
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 13/15
.xaml.cs/.vbのテスト
•ユニットテストでは画面をインスタンス化するのは困難
•staticメソッドはテスト可能 画面をインスタンス化しようとすると、スレ違いで
怒られる。
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 14/15
async/awaitのテスト
•普通に書くと「すっぽ抜ける」
•テストメソッドの型を async Task にする。(MSTest, NUnit)
テストメソッド中の await で制御が一旦テストランナーに戻ると、そこでテスト失敗の監視は終了してしまう。
テストメソッドの型を void から Task に変える。するとテストランナーは await してくれるので、テストメソッドの完了までテスト失敗を監視できる。
void → async Task
※ 未対応のテストランナーでは、await せずに Task.Wait() して対応する。
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 15/15
おしまい
まとめ
・Metro画面には、専用のテストプロジェクト
・asyncメソッドでは、非同期の完了を待機させる
top related