わんくま名古屋#25(20121201) TDD道場#13 ~...

15
わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 1/15 TDD道場 2012年12月1日 わんくま同盟 名古屋勉強会 #25 TDD やってみよう! biac 名古屋市 名古屋ソフトウェアセンター

description

サンプルコードは SkyDrive にあります。 http://t.co/Z9DnR4ho

Transcript of わんくま名古屋#25(20121201) TDD道場#13 ~...

Page 1: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 1/15

TDD道場

2012年12月1日

わんくま同盟名古屋勉強会 #25

TDDやってみよう!

biac

名古屋市名古屋ソフトウェアセンター

Page 2: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #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(コーディング技法)の普及

著作

Page 3: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 3/15

Test

Driven

Development

テスト駆動開発

Page 4: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 4/15

TDD – テスト駆動開発

・「テスト」と言ってるけど、TDDは品質保証テストじゃない。

・「開発」と言ってるけど、TDDは開発プロセスじゃない。

Page 5: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #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).

Page 6: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #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.

Page 7: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 7/15

Test

Driven

Development

= 自動化されたテストを使って開発を駆動するスタイル

Page 8: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 8/15

大事なことなのでもう1度

「自動化されたテスト」…を作ってからコードを書くのだ。

Page 9: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 9/15

本日のテーマ

•Metroスタイルアプリをテストファーストする(Windows 8)

Metro スタイル アプリ (と、かつて呼ばれていたナニカ) をテストファーストで作る時のポイントは?

Page 10: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 10/15

テストツール

•VS2012 Express⇒MSTest 標準

•VS2012 有償版⇒NUnit 等も組み込み可能

Visual Studio 2012 有償版の「拡張機能と更新プログラム」ダイアログ

・上の画像では「NUnit Test Adapter」がインストールされている。Test Adapterがあれば、任意のユニットテスト フレームワークをIDEから実行できる。・ExpressにもMSTestが組み込まれた。他のユニットテスト フレームワークは、IDE外で実行する。

Page 11: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 11/15

テストプロジェクト

•Metroアプリを対象にするには、専用のテストプロジェクト

・[上] Metroアプリ用の単体テストプロジェクト・[下] 一般のクラス ライブラリ用

Page 12: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 12/15

Metro用テストプロジェクト

•appxmanifest などが含まれる

※ テスト対象と同じケイパビリティ設定が必要

※ テスト対象がCOMを使っているとテスト不可

Metroアプリ用の単体テストプロジェクト (Express)

マニフェスト

証明書

Metro用.NET

Page 13: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 13/15

.xaml.cs/.vbのテスト

•ユニットテストでは画面をインスタンス化するのは困難

•staticメソッドはテスト可能 画面をインスタンス化しようとすると、スレ違いで

怒られる。

Page 14: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 14/15

async/awaitのテスト

•普通に書くと「すっぽ抜ける」

•テストメソッドの型を async Task にする。(MSTest, NUnit)

テストメソッド中の await で制御が一旦テストランナーに戻ると、そこでテスト失敗の監視は終了してしまう。

テストメソッドの型を void から Task に変える。するとテストランナーは await してくれるので、テストメソッドの完了までテスト失敗を監視できる。

void → async Task

※ 未対応のテストランナーでは、await せずに Task.Wait() して対応する。

Page 15: わんくま名古屋#25(20121201) TDD道場#13 ~ Metroアプリをテストファーストするときのポイント

わんくま同盟 名古屋勉強会 #25 – TDD道場 #13 15/15

おしまい

まとめ

・Metro画面には、専用のテストプロジェクト

・asyncメソッドでは、非同期の完了を待機させる