Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 1/35
TDD道場
2013年11月23日
わんくま同盟
名古屋勉強会 #29
TDD
やってみよう!
biac
名古屋市
西生涯学習センター
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 2/35
自己紹介
• 著書
– 「速攻入門 C#」 (2012/3)
技術評論社、共著
– 「ソフトな彼女とハードな彼
氏。」(2012/3) アジャイルマイ
ンドvol.1 掲載
...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 3/35
Test
Driven
Development
テスト駆動開発
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 4/35
TDD – テスト駆動開発
・「テスト」と言ってるけど、
TDDは品質保証テストじゃない。
・「開発」と言ってるけど、
TDDは開発プロセスじゃない。
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 5/35
TDDの考案者
Kent Beck の説明
“Test Driven Development: By Example” (2002) より。
We drive develop...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 6/35
具体的には?
“Test Driven Development: By Example” (2002) より。
In Test-Driven Development, we
...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 7/35
Test
Driven
Development
= 自動化されたテストを使って
開発を駆動するスタイル
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 8/35
大事なことなのでもう1度
「自動化されたテスト」
…を作ってからコードを書くのだ。
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 9/35
CM
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 10/35
TDD Advent
Calendar
• http://qiita.com/advent-
calendar/2013/tddadventjp
/participants...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 11/35
本日の
テーマ
•ホントは1年前に
喋らなきゃ
いけなかったんだ
すっかり
忘れてたよ… orz
MSTest の暗黒大陸
@Windows ストア アプリ
Visual ...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 12/35
暗黒大陸
その内部がほとんど知られていないところ。
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 13/35
暗黒大陸
論より証拠。
Windows ストア アプリ用のユニットテ
スト プロジェクトを作ってみる
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 14/35
暗黒大陸
MSTest は慣れたものですからね、
サクサク書きますよ f(^^;
たまにはヘルプを見ましょうか!?
AreEqual にカーソルを置いて [F1] !
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 15/35
暗黒大陸
[F1] 押すと、IE が立ち上がって…
…マテコラ!
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 16/35
暗黒大陸
VS2013 Ult. で、デスクトップ アプ
リ用の MSTest
こんどは Ultimate + Power Tools で。
デスクトップ アプリ用の MS...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 17/35
暗黒大陸
VS2013 Ult. で、ストア アプリ用の
MSTest
Windows ストア アプリ用の MSTest だと
AreEqual のヘルプはやっぱり無い!
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 18/35
暗黒大陸
んなアホな!?
使ってる名前空間を確認して…
Windows ストア アプリ用の MSTest で使っているのは
Microsoft.VisualStudio.T...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 19/35
暗黒大陸
何ちゃらUnitTestFramework名前空間を
MSDN で ぐぐってみる…!?
Microsoft.VisualStudio.TestPlatform.U...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 20/35
暗黒大陸
MSTest で使う
何ちゃらUnitTestFramework名
前空間は、
地図の無い世界
だった!!
?
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 21/35
VS2013が出たのに
いまだにドキュメン
トが無い!!
?となると、Windows
ストア アプリ用 MSTest
で使うライブラリーは
自力で地図を
作るっきゃない!
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 22/35
最初に残された
道しるべ…
?
まったく何も手掛かりが無いわけじゃぁ ない
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 23/35
2つのMSTest
MSTest が使うクラ
ス ライブラリは、
2つある。
※ VS2013のオブジェクト
ブラウザーで見てみる
従来のアプリ用
Windows ストア
...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 24/35
1. 従来の
アプリ用
MSDNにドキュメントがある
名前が同じクラスは、だいたい同じだろう f(^^;
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 25/35
2. 無いものは
無いのだ!
Windows ストア ア
プリ用のライブラ
リーに無いものは、
使えないのだ! orz
従来のアプリ用
赤色にしたクラス等
は、Window...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 26/35
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 27/35
3. 真の秘境
Windows ストア ア
プリ用のライブラ
リーだけに存在す
るクラスなどは、
まさに秘境!!
Windows ストア
アプリ用
緑色にしたクラス等
は、...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 28/35
探検を
はじめよう
Windows ストア アプリ専用の
クラスの中から、まずは…
2つ目の Assert クラス!
これはいったい何なんだ!?
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 29/35
2つ目の
Assert クラス
オブジェクト ブラウザーで
見てみる
ThrowsException メ
ソッドだけがある
(3オーバーロード) 説明なしかよ! orz
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 30/35
2つ目の
Assert クラス
いろいろやってみる。
メソッド名とシグネチャが
頼り。
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 31/35
1. まず、1つ目の Assert クラスと名前が衝突しないよう、using でクラス
名のエイリアスを切っておく。
using AppContainerAssert
= ...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 32/35
2. ThrowsException<T>メソッドのシグネチャ
public static Task<ExpectedException> //返値: 発生した例外
Thr...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 33/35
3. ThrowsException<T>メソッドの使用例
[TestMethod]
public async Task Test_想定通りの例外が出れば合格()
{
va...
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 34/35
俺たちの旅はまだ始まったばかりだ!!
?
わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 35/35
おしまい
まとめ
・Windows ストア アプリ
のユニット テストには、
専用のプロジェクト
・そこで使えるテスティン
グ フレームワークには、
ドキュメントが無い。
...
Upcoming SlideShare
Loading in …5
×

わんくま名古屋 #29 (2013/11/23) TDD道場 #17

724 views

Published on

SkyDrive からもダウンロードできます (PowerPoint/PDF)。
http://sdrv.ms/I75CDE

Published in: Technology
  • Be the first to comment

わんくま名古屋 #29 (2013/11/23) TDD道場 #17

  1. 1. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 1/35 TDD道場 2013年11月23日 わんくま同盟 名古屋勉強会 #29 TDD やってみよう! biac 名古屋市 西生涯学習センター
  2. 2. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 2/35 自己紹介 • 著書 – 「速攻入門 C#」 (2012/3) 技術評論社、共著 – 「ソフトな彼女とハードな彼 氏。」(2012/3) アジャイルマイ ンドvol.1 掲載 • 記事 – 連載 「C#でTDD入門」 CodeZine – 週刊連載「WinRT/Metro Tips」 @IT - .NET開発者中心 …etc. biac (山本 康彦) BluewaterSoft http://www.bluewatersoft.jp/ • 名古屋大学工学部(修士) • HONDA R&Dで自動車設計 • 1994~ ソフトウェア業界 • 2012~ BluewaterSoft ソフトウェア 開発 Windows 8 Metro Style App. Windows Phone 8 …Windows系の最新技術 TDD(コーディング技法)の普及 著作 2013/7 すまん m(_`_)m この1年、すっかりサボってました
  3. 3. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 3/35 Test Driven Development テスト駆動開発
  4. 4. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 4/35 TDD – テスト駆動開発 ・「テスト」と言ってるけど、 TDDは品質保証テストじゃない。 ・「開発」と言ってるけど、 TDDは開発プロセスじゃない。
  5. 5. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 5/35 TDDの考案者 Kent Beck の説明 “Test Driven Development: By Example” (2002) より。 We drive development with automated tests, a style of development called Test-Driven Development (TDD). 「 」
  6. 6. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 6/35 具体的には? “Test Driven Development: By Example” (2002) より。 In Test-Driven Development, we ・Write new code only if an automated test has failed ・Eliminate duplication These are two simple rules.
  7. 7. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 7/35 Test Driven Development = 自動化されたテストを使って 開発を駆動するスタイル
  8. 8. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 8/35 大事なことなのでもう1度 「自動化されたテスト」 …を作ってからコードを書くのだ。
  9. 9. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 9/35 CM
  10. 10. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 10/35 TDD Advent Calendar • http://qiita.com/advent- calendar/2013/tddadventjp /participants • 「tdd カレンダー 2013」 でぐぐる(Bingじゃ出ない) • twitterハッシュタグ #TddAdventJp
  11. 11. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 11/35 本日の テーマ •ホントは1年前に 喋らなきゃ いけなかったんだ すっかり 忘れてたよ… orz MSTest の暗黒大陸 @Windows ストア アプリ Visual Studio で TDD やるとすると、 標準搭載のユニット テスト フレームワークは MSTest。 だが、そこは……
  12. 12. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 12/35 暗黒大陸 その内部がほとんど知られていないところ。
  13. 13. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 13/35 暗黒大陸 論より証拠。 Windows ストア アプリ用のユニットテ スト プロジェクトを作ってみる
  14. 14. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 14/35 暗黒大陸 MSTest は慣れたものですからね、 サクサク書きますよ f(^^; たまにはヘルプを見ましょうか!? AreEqual にカーソルを置いて [F1] !
  15. 15. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 15/35 暗黒大陸 [F1] 押すと、IE が立ち上がって… …マテコラ!
  16. 16. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 16/35 暗黒大陸 VS2013 Ult. で、デスクトップ アプ リ用の MSTest こんどは Ultimate + Power Tools で。 デスクトップ アプリ用の MSTest だと AreEqual のヘルプは確かに有る!
  17. 17. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 17/35 暗黒大陸 VS2013 Ult. で、ストア アプリ用の MSTest Windows ストア アプリ用の MSTest だと AreEqual のヘルプはやっぱり無い!
  18. 18. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 18/35 暗黒大陸 んなアホな!? 使ってる名前空間を確認して… Windows ストア アプリ用の MSTest で使っているのは Microsoft.VisualStudio.TestPlatform.UnitTestFramework 名前空間
  19. 19. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 19/35 暗黒大陸 何ちゃらUnitTestFramework名前空間を MSDN で ぐぐってみる…!? Microsoft.VisualStudio.TestPlatform.UnitTestFramework 名前空間の検索結果 ⇒ このクラス ライブラリのページは無い!
  20. 20. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 20/35 暗黒大陸 MSTest で使う 何ちゃらUnitTestFramework名 前空間は、 地図の無い世界 だった!! ?
  21. 21. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 21/35 VS2013が出たのに いまだにドキュメン トが無い!! ?となると、Windows ストア アプリ用 MSTest で使うライブラリーは 自力で地図を 作るっきゃない!
  22. 22. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 22/35 最初に残された 道しるべ… ? まったく何も手掛かりが無いわけじゃぁ ない
  23. 23. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 23/35 2つのMSTest MSTest が使うクラ ス ライブラリは、 2つある。 ※ VS2013のオブジェクト ブラウザーで見てみる 従来のアプリ用 Windows ストア アプリ用
  24. 24. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 24/35 1. 従来の アプリ用 MSDNにドキュメントがある 名前が同じクラスは、だいたい同じだろう f(^^;
  25. 25. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 25/35 2. 無いものは 無いのだ! Windows ストア ア プリ用のライブラ リーに無いものは、 使えないのだ! orz 従来のアプリ用 赤色にしたクラス等 は、Windows ストア アプリ用には存在し ない。
  26. 26. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 26/35
  27. 27. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 27/35 3. 真の秘境 Windows ストア ア プリ用のライブラ リーだけに存在す るクラスなどは、 まさに秘境!! Windows ストア アプリ用 緑色にしたクラス等 は、Windows ストア アプリ用だけに存在 する。(8ヶ所) ?
  28. 28. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 28/35 探検を はじめよう Windows ストア アプリ専用の クラスの中から、まずは… 2つ目の Assert クラス! これはいったい何なんだ!?
  29. 29. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 29/35 2つ目の Assert クラス オブジェクト ブラウザーで 見てみる ThrowsException メ ソッドだけがある (3オーバーロード) 説明なしかよ! orz
  30. 30. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 30/35 2つ目の Assert クラス いろいろやってみる。 メソッド名とシグネチャが 頼り。
  31. 31. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 31/35 1. まず、1つ目の Assert クラスと名前が衝突しないよう、using でクラス 名のエイリアスを切っておく。 using AppContainerAssert = Microsoft.VisualStudio.TestPlatform.UnitTestFramework .AppContainer.Assert; ※ 毎回これだけ長い名前空間を記述してもかまわないけど…w 2つ目の Assert クラス 試行錯誤の結果、 ThrowsException<T>メソッドの 使い方は、たぶんこんな感じ。(1/3) ?
  32. 32. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 32/35 2. ThrowsException<T>メソッドのシグネチャ public static Task<ExpectedException> //返値: 発生した例外 ThrowsException<ExpectedException>( //型: 想定される例外 Func<Task> action, //引数1: テスト対象の非同期メソッド string message, //引数2: 不合格時に出すメッセージ params object[] parameters //引数3: ……不明 orz ) where ExpectedException : Exception; 2つ目の Assert クラス 試行錯誤の結果、 ThrowsException<T>メソッドの 使い方は、たぶんこんな感じ。(2/3) ?
  33. 33. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 33/35 3. ThrowsException<T>メソッドの使用例 [TestMethod] public async Task Test_想定通りの例外が出れば合格() { var resultEx = await AppContainerAssert.ThrowsException <InvalidOperationException>( () => TestTargetMethod("INVALIDOP"), "想定した例外が出なかったよ!!" ); // 出てきた例外のチェックも可能 Assert.AreEqual<string>("例外のメッセージだよ", resultEx.Message); } 2つ目の Assert クラス 試行錯誤の結果、 ThrowsException<T>メソッドの 使い方は、たぶんこんな感じ。(3/3) ?
  34. 34. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 34/35 俺たちの旅はまだ始まったばかりだ!! ?
  35. 35. わんくま同盟 名古屋勉強会 #29 – TDD道場 #17 35/35 おしまい まとめ ・Windows ストア アプリ のユニット テストには、 専用のプロジェクト ・そこで使えるテスティン グ フレームワークには、 ドキュメントが無い。 謎だらけ!!

×