SlideShare une entreprise Scribd logo
1  sur  42
Moq & Fakes Framework を使った
実践的ユニットテスト
株式会社ネクストスケープ
アーキテクト
上坂 貴志
http://www.nextscape.net/
2
セッションのゴール
• モックとは何かがわかる
• モックを使うとどんな良いことがあるかがわかる
• モック導入のためのアーキテクチャがわかる
• モックを使用したユニットテストを実プロジェクトに導入する!
3
ごめんなさい、CM です
• 株式会社 NEXTSCAPE というシステム開発会社です。
4
ごめんなさい、CM です
• オフィシャルな謳い文句
• Microsoft Partner of the Year 2012 Windows Azure受賞!
• 2013 Microsoft Worldwide Partner Award (Cloud Partner of the Year) ファイナリスト!
• Windows Azure 取扱高がアジア No.1 !
• PlayReadyについて、アジア・パシフィックにおける Microsoft 唯一の戦略パートナー!
(※PlayReady…Microsoft の デジタル著作権管理プラットフォーム)
• Sitecore認定パートナー!MVP保持者日本最多!
(※Sitecore…世界50ヵ国以上、世界有名ブランド3000社以上が導入した Web CMS & Digital Marketing
Platform)
• 株式会社 豆蔵のグループ会社です。
5
ごめんなさい、CM です
• 人材募集な内容
• .NET 、特に C#.NET による開発が大多数です。
(iOSアプリ開発もしてます!)
• 二次請けは一切しません。していません。
• プログラミング大好き!新しい技術大好き!という人、多数。
というかそういうタイプの人が社風に合うみたい?
• こっそりと Microsoft MVP がちらほら。
• アジャイル開発推進中。
• 社長「工数ベースで売上を考える時代は終わった!」(詳しくは面接で!)
• 中途採用絶賛強化中!.Net エンジニア集まれ!
6
セッション内容
1. 改めてモックとは
2. モックを使用するメリット
3. Moq とは
4. Fakes Framework とは
5. テスタビリティの高いアーキテクチャ
6. 実例:DBを使用しないユニットテスト
7. まとめ
8. おまけ(ShimによるDbContextモック化)
1.改めてモックとは
2. モックを使用するメリット
3. Moq とは
4. Fakes Framework とは
5. テスタビリティの高いアーキテクチャ
6. 実例:DBを使用しないユニットテスト
7. まとめ
8. おまけ(ShimによるDbContextモック化)
8
改めてモックとは
• テスト対象のクラスが依存するクラスの代わりとなるもの
テスト対象クラス
---------------------
テスト対象メソッド
テストクラス
--------------------
テストメソッド
依存クラスA
---------------------
メソッドA
依存クラスB
---------------------
メソッドB
引数パターン1
引数パターン2
・・・
引数A
引数B
戻り値A
戻り値B
モックで置き換える
モックで置き換える
9
改めてモックとは
• 一般的なモックの使用方法
テスト対象クラス
---------------------
テスト対象メソッド
テストクラス
--------------------
テストメソッド
依存クラスA
---------------------
メソッドA
引数パターン1
戻り値A
<依存クラスA>
Mock Object
1. モック化する依存クラス、または Interface を指定して生成
2. モック化するメソッドを指定して戻り値をセット
3. モックを渡す
4. テスト対象メソッドを起動
モック化する対象
<依存クラスA>
Mock Object
モックにセットした
戻り値になる
1. 改めてモックとは
2.モックを使用するメリット
3. Moq とは
4. Fakes Framework とは
5. テスタビリティの高いアーキテクチャ
6. 実例:DBを使用しないユニットテスト
7. まとめ
8. おまけ(ShimによるDbContextモック化)
11
モックを使用するメリット
• 依存クラスのバグを気にしなくて良い
テスト対象クラス
---------------------
テスト対象メソッド
テストクラス
--------------------
テストメソッド
依存クラスA
---------------------
メソッドA
引数 引数
戻り値A
どっちが原因か
わからない?
戻り値
Assert失敗!
モックで置き換える
原因はこっち!
12
モックを使用するメリット
• テスト範囲を汚染しない
テスト対象クラス
---------------------
テスト対象メソッド
テストクラス
--------------------
テストメソッド
依存クラスA
---------------------
メソッドA
引数 引数A
戻り値A戻り値
モックで置き換える
戻り値A
は”hogehoge”
ね!
何をセット?
何を渡されても戻り
値に関係ない
戻り値
は”hogehoge”
13
モックを使用するメリット
• データベースにテストデータを用意しないで済む
テスト対象クラス
---------------------
テスト対象メソッド
テストクラス
--------------------
テストメソッド
引数 引数A
DataTable
Entity
戻り値
DB 取得結果は
この Entity ね!
データアクセスクラス
--------------------
ADO.NET,
Entity Framework, etc
Select
Update
Insert
Data
モックで置き換
える
Tran 1
Master
A
Tran N
Master
Tran 2
・・・
Master
A
戻り値となるDataTable,
Entity はテストパターン
に合わせて自由自在
1. 改めてモックとは
2. モックを使用するメリット
3.Moq とは
4. Fakes Framework とは
5. テスタビリティの高いアーキテクチャ
6. 実例:DBを使用しないユニットテスト
7. まとめ
8. おまけ(ShimによるDbContextモック化)
15
Moq とは
• オープンソースモックライブラリ。商用可能。
• NuGet で 簡単に DLL ダウンロード &参照追加
• 特徴
1. ラムダ式によって型、メソッド、戻り値の指定
2. インターフェース, クラス (抽象クラスも含む)どちらもモック化
可能
• クラスの場合、public な仮想メソッドのみモック化可能)
3. モック化したメソッドの引数に Moq.It.IsAny<T>()を指定する
ことで仮引数に渡された値を無視することが簡単にできる
4. 静的メソッドはモック不可
16
• カートに 商品を追加するシナリオ
Moqの使用方法
StockService
----------------------------------
+ int CurrentQuantity(int productId)
+ bool ProvisionTemporary(int productId, out int tempProvisionId)
+ bool Provision(int tempProvisionId)
Cart
---------------------
+ bool Add(int productId)
X
現在の在庫数 は?( CurrentQuantity )
商品を仮押さえ( provisionTemporary)
仮押さえ Id (temporaryProvisionId)
false
Alt
[在庫数 <1]
true
X
X
17
Moqの使用方法
StockService
---------------------
<virtual>
+ int CurrentQuantity(int productId)
Cart
---------------------
+ bool Add(int productId)
テストクラス
--------------------
テストメソッド
• 本当に Mock 化したメソッドが使用されたのかを確認する
• 何回 Mock 化したメソッドが使用されたのかを確認 する
Verify メソッドを使う
1. 改めてモックとは
2. モックを使用するメリット
3. Moq とは
4.Fakes Framework とは
5. テスタビリティの高いアーキテクチャ
6. 実例:DBを使用しないユニットテスト
7. まとめ
8. おまけ(ShimによるDbContextモック化)
19
Fakes Framework とは
• Micorosoft製モックフレームワーク。
(Visual Studio 2012 Premium, Ultimateでのみ使用可)
• Microsoft.QualityTools.Testing.Fakes へ参照追加
• 特徴
1. 事前に Mock用のクラスを生成
• 参照設定中の DLL を右クリックで指定すると自動的に生成
2. 大きく機能が二つにわかれている
• インターフェース, 抽象クラス のモックは Stub
(Moq とほぼ同じ機能と考えればOK)
• クラスのモックは Shims
(ほぼなんでもモック化可能。public 仮想メソッド でなくてもモック可能、静的メ
ソッドもモック化可能!)
20
Fakes Framework の使用方法
Cart
---------------------
+ bool Add(int productId)
テストクラス
--------------------
テストメソッド
何も渡さない
ただ起動するだけ
StockService
---------------------
<virtual>
+ int CurrentQuantity(int productId)
• 本当に Mock 化したメソッドが使用されたのかを確認する?
• 何回 Mock 化したメソッドが使用されたのかを確認 する?
そんな機能はありません・・・
21
Fakes Framework の使用方法
(依存クラスがInterface を実装している場合)
Cart
---------------------
+ bool Add(int productId)
テストクラス
--------------------
テストメソッド IStockService
StockService
---------------------
<virtual>
+ int CurrentQuantity(int productId)
• 本当に Mock 化したメソッドが使用されたのかを確認する?
• 何回 Mock 化したメソッドが使用されたのかを確認 する?
やっぱりそんな機能はありません・・・
1. 改めてモックとは
2. モックを使用するメリット
3. Moq とは
4. Fakes Framework とは
5.テスタビリティの高いアーキテクチャ
6. 実例:DBを使用しないユニットテスト
7. まとめ
8. おまけ(ShimによるDbContextモック化)
23
テスタビリティの高いアーキテクチャ
• 依存クラスをモックで切り替えられるようにするためには
アーキテクチャに従った実装が必要
Mockを使
わない?
メソッド内のローカル変数はモック化できない!
Test Project
さっきのシナリオでのテスト実装はこうだった
24
テスタビリティの高いアーキテクチャ
• 依存クラスをモックで切り替えられるようにするためには
アーキテクチャに従った実装が必要
• 依存オブジェクトはプロパティで持つ!
• メソッド内ではオブジェクト生成しない!
Test Project
Mock使用
してる!
Mock
Mock
25
テスタビリティの高いアーキテクチャ
• 依存オブジェクトの生成 その1
依存オブジェクトの生
成はデフォルトコンス
トラクタで!
コンストラクタの
オーバーロードは必
ずデフォルトコンス
トラクタを呼ぶ!
26
テスタビリティの高いアーキテクチャ
• 依存オブジェクトの生成 その2
Cart
StockService
DIContainer
Give me Cart object
Here you are !!
Create
Create
Injection
Property
Injection
Constructor
Injection
27
Cart
Cart
テスタビリティの高いアーキテクチャ
• サービスを格納するプロパティは internal に
Test Project
ASP.NET MVC
Controller Class
見えない
よ?
テストプロジェクト以外から
は見ちゃだめ!・・・って口
で言っても守ってくれる保証
はないなぁ
ASP.NET MVC
Controller Class
Test Project
見えてる!
28
Cart
テスタビリティの高いアーキテクチャ
• サービスを格納するプロパティは internal に
Test Project
見えてる!
ASP.NET MVC
Controller Class
追記
AssermblyInfo の変更でテストクラスからだけ見えるように
29
ShimsContext 上で実行する
テスタビリティの高いアーキテクチャ
• 既に構築済みのシステムはどうするか?
• 絶対に実装済みの箇所を触れないなら、Fakes Framework 一択!
Cart
---------------------
+ bool Add(int productId)
テストクラス
--------------------
テストメソッド
Shimsモック
StockService
---------------------
<virtual>
+ int CurrentQuantity(int productId)
1. 改めてモックとは
2. モックを使用するメリット
3. Moq とは
4. Fakes Framework とは
5. テスタビリティの高いアーキテクチャ
6.実例:DBを使用しないユニットテスト
7. まとめ
8. おまけ(ShimによるDbContextモック化)
31
実例:DBを使用しないユニットテスト
• 説明の前提となる構成
1. DBアクセスには Entity Framework 使用
2. Serviceレイヤーで直接 DB にアクセスしない
3. Repositoryレイヤーのみが DB にアクセスする
• Repository<T> クラスを用意
• Repository <T>クラスは IRepository<T> インターフェースを実装
• Repository<T> クラスの アクセス修飾子は internal
• 全てのDBアクセスはこのクラスを通じてしか許さない
• いわゆるリポジトリパターンってやつです
Service
---------------------
テスト対象クラス Repository<T>
---------------------
モック対象クラス
IRepository<T> Entity
Framework
(DbContext)
32
実例:DBを使用しないユニットテスト
• Repository クラスはこんな感じで使います
FactStock は、Model クラス
(テーブルと1 : 1でVS が自動生成)
Filter は IRepository<T> のメソッド。
戻り値は IList<T>
Sum は Linq to Object のメソッド
33
実例:DBを使用しないユニットテスト
Moq 版
右へ続く
テスト対象 CurrentQuantity メソッド
Callback メソッドは、引数を受け取る
ことができる
34
実例:DBを使用しないユニットテスト
Fakes Stub 版
右へ続く
テスト対象 CurrentQuantity メソッド
Delegate の引数でメソッドの引数を受
け取ることができる
35
まとめ
• モックとは何かがわかる
• テスト対象が依存するクラスを入れ替えるもの
• ほとんどのモックライブラリの使い方は似ている
• モックを使うとどんな良いことがあるかがわかる
• 依存クラスのバグを気にしなくて良い
• テスト範囲を汚染しない
• データベースにテストデータを用意しないで済む
• モック導入のためのアーキテクチャがわかる
• 依存オブジェクトはプロパティで持つ
• メソッド内ではオブジェクト生成しない
• 生成依存の解決は DI コンテナがお薦め
• モックを使用したユニットテストを実プロジェクトに導入する!
• Repository パターンを使用して、DBに依存しないテスト
1. 改めてモックとは
2. モックを使用するメリット
3. Moq とは
4. Fakes Framework とは
5. テスタビリティの高いアーキテクチャ
6. 実例:DBを使用しないユニットテスト
7. まとめ
8. おまけ(ShimによるDbContextモック化)
注意!難易度高め!
38
実例:DBを使用しないユニットテスト
Fakes Shim 版
• StockService.CurrentQuantity メソッド内で
DbContextを継承するクラスを 生成している場合
Mock化でき
ない
• Mock 化可能にするために DbSet<T> → IDbSet<T>
※自動生成なので、
T4テンプレートを修正
DbContextを継承しているクラス
39
実例:DBを使用しないユニットテスト
Fakes Shim 版
右へ続く
テスト対象 CurrentQuantity メソッド
Whereで指定された Expression を受け取る
db.FactStocks の Shim
IDbSet<FactStock> の
Stub を返却
まだ続く
40
実例:DBを使用しないユニットテスト
Fakes Shim 版
Where に指定された Expression をテス
トするために、
System.Linq.IQueryable.Where メソッド
をモック化
できなくないけど、
難しいね
Repository パターン
の方が簡単だよ!
ありがとうございました
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider

Contenu connexe

Tendances

日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについてkumake
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CDYuta Matsumura
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用CloudFront経由でのCORS利用
CloudFront経由でのCORS利用Yuta Imai
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかShogo Wakayama
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)Koichiro Matsuoka
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
ログ管理のベストプラクティス
ログ管理のベストプラクティスログ管理のベストプラクティス
ログ管理のベストプラクティスAkihiro Kuwano
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?Takuya Ueda
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろうShingo Omura
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexprGenya Murakami
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 

Tendances (20)

日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CD
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用CloudFront経由でのCORS利用
CloudFront経由でのCORS利用
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
ログ管理のベストプラクティス
ログ管理のベストプラクティスログ管理のベストプラクティス
ログ管理のベストプラクティス
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 

Similaire à Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider

Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshopDaisuke Sugai
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべKaoru NAKAMURA
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセスMakoto Kato
 
Mozillaのビルドインフラ
MozillaのビルドインフラMozillaのビルドインフラ
MozillaのビルドインフラMakoto Kato
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployRyutaro YOSHIBA
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)シスコシステムズ合同会社
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMFAtomu Hidaka
 
ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方Harada Kazuki
 
Microsoft Tunnel 概要
Microsoft Tunnel 概要Microsoft Tunnel 概要
Microsoft Tunnel 概要Yutaro Tamai
 
4.総合演習(1)
4.総合演習(1)4.総合演習(1)
4.総合演習(1)openrtm
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)シスコシステムズ合同会社
 
201111 04
201111 04201111 04
201111 04openrtm
 
Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門You&I
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理Kouji Matsui
 
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-Hiroki Kondo
 
マイクロソフトのクラウドテクノロジーでゲーム開発(2019年7月)
マイクロソフトのクラウドテクノロジーでゲーム開発(2019年7月)マイクロソフトのクラウドテクノロジーでゲーム開発(2019年7月)
マイクロソフトのクラウドテクノロジーでゲーム開発(2019年7月)Daisuke Masubuchi
 
20181006 HoloLens Meetup
20181006 HoloLens Meetup20181006 HoloLens Meetup
20181006 HoloLens MeetupDataMeshJP
 

Similaire à Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider (20)

Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべ
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 
Mozillaのビルドインフラ
MozillaのビルドインフラMozillaのビルドインフラ
Mozillaのビルドインフラ
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方
 
Microsoft Tunnel 概要
Microsoft Tunnel 概要Microsoft Tunnel 概要
Microsoft Tunnel 概要
 
4.総合演習(1)
4.総合演習(1)4.総合演習(1)
4.総合演習(1)
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
 
200513 ur
200513 ur200513 ur
200513 ur
 
Jenkinsstudy#4kokawa
Jenkinsstudy#4kokawaJenkinsstudy#4kokawa
Jenkinsstudy#4kokawa
 
201111 04
201111 04201111 04
201111 04
 
Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門
 
2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
 
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
 
マイクロソフトのクラウドテクノロジーでゲーム開発(2019年7月)
マイクロソフトのクラウドテクノロジーでゲーム開発(2019年7月)マイクロソフトのクラウドテクノロジーでゲーム開発(2019年7月)
マイクロソフトのクラウドテクノロジーでゲーム開発(2019年7月)
 
20181006 HoloLens Meetup
20181006 HoloLens Meetup20181006 HoloLens Meetup
20181006 HoloLens Meetup
 

Plus de 貴志 上坂

Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版貴志 上坂
 
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析貴志 上坂
 
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析貴志 上坂
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
第5回 cogbot勉強会!
第5回 cogbot勉強会!第5回 cogbot勉強会!
第5回 cogbot勉強会!貴志 上坂
 
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装貴志 上坂
 
NS study8 DDD Microservices Azuer Service Fabric
NS study8 DDD Microservices Azuer Service FabricNS study8 DDD Microservices Azuer Service Fabric
NS study8 DDD Microservices Azuer Service Fabric貴志 上坂
 
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~貴志 上坂
 
Ns study Azure IoTHub紹介
Ns study Azure IoTHub紹介Ns study Azure IoTHub紹介
Ns study Azure IoTHub紹介貴志 上坂
 
アルゴリズムから学ぶAzure mlモジュールの使いこなし方 hd-insight編-
アルゴリズムから学ぶAzure mlモジュールの使いこなし方 hd-insight編-アルゴリズムから学ぶAzure mlモジュールの使いこなし方 hd-insight編-
アルゴリズムから学ぶAzure mlモジュールの使いこなし方 hd-insight編-貴志 上坂
 
Azure Machine Learningによるレコメンデーションの設計&実装を公開!~朝日カルチャーセンターの事例から~
Azure Machine Learningによるレコメンデーションの設計&実装を公開!~朝日カルチャーセンターの事例から~Azure Machine Learningによるレコメンデーションの設計&実装を公開!~朝日カルチャーセンターの事例から~
Azure Machine Learningによるレコメンデーションの設計&実装を公開!~朝日カルチャーセンターの事例から~貴志 上坂
 
20150421 QCon Tokyo 2015 Azureが切り開く新時代のソフトウェア開発・設計
20150421 QCon Tokyo 2015 Azureが切り開く新時代のソフトウェア開発・設計20150421 QCon Tokyo 2015 Azureが切り開く新時代のソフトウェア開発・設計
20150421 QCon Tokyo 2015 Azureが切り開く新時代のソフトウェア開発・設計貴志 上坂
 
クラウドデザインパターンのススメ
クラウドデザインパターンのススメクラウドデザインパターンのススメ
クラウドデザインパターンのススメ貴志 上坂
 
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~貴志 上坂
 
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築貴志 上坂
 

Plus de 貴志 上坂 (15)

Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
 
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
開発者のための機械学習入門:Azure Machine Learning Studioで構造化データから予測分析
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
第5回 cogbot勉強会!
第5回 cogbot勉強会!第5回 cogbot勉強会!
第5回 cogbot勉強会!
 
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
 
NS study8 DDD Microservices Azuer Service Fabric
NS study8 DDD Microservices Azuer Service FabricNS study8 DDD Microservices Azuer Service Fabric
NS study8 DDD Microservices Azuer Service Fabric
 
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
始めよう! ドメイン駆動設計&マイクロサービス開発 ~C# と Azure Service Fabric で最高の DDD 開発を~
 
Ns study Azure IoTHub紹介
Ns study Azure IoTHub紹介Ns study Azure IoTHub紹介
Ns study Azure IoTHub紹介
 
アルゴリズムから学ぶAzure mlモジュールの使いこなし方 hd-insight編-
アルゴリズムから学ぶAzure mlモジュールの使いこなし方 hd-insight編-アルゴリズムから学ぶAzure mlモジュールの使いこなし方 hd-insight編-
アルゴリズムから学ぶAzure mlモジュールの使いこなし方 hd-insight編-
 
Azure Machine Learningによるレコメンデーションの設計&実装を公開!~朝日カルチャーセンターの事例から~
Azure Machine Learningによるレコメンデーションの設計&実装を公開!~朝日カルチャーセンターの事例から~Azure Machine Learningによるレコメンデーションの設計&実装を公開!~朝日カルチャーセンターの事例から~
Azure Machine Learningによるレコメンデーションの設計&実装を公開!~朝日カルチャーセンターの事例から~
 
20150421 QCon Tokyo 2015 Azureが切り開く新時代のソフトウェア開発・設計
20150421 QCon Tokyo 2015 Azureが切り開く新時代のソフトウェア開発・設計20150421 QCon Tokyo 2015 Azureが切り開く新時代のソフトウェア開発・設計
20150421 QCon Tokyo 2015 Azureが切り開く新時代のソフトウェア開発・設計
 
クラウドデザインパターンのススメ
クラウドデザインパターンのススメクラウドデザインパターンのススメ
クラウドデザインパターンのススメ
 
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
 
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
 

Dernier

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Dernier (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider