SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング佑哉 廣岡
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話Ryosuke Uchitate
 
Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法Takeshi Fukuhara
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと土岐 孝平
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはJun-ichi Sakamoto
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 

Was ist angesagt? (20)

SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
 
Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 貴志 上坂

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で構造化データから予測分析貴志 上坂
 
第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 大量データ処理アーキテクチャの構築貴志 上坂
 

Mehr von 貴志 上坂 (14)

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で構造化データから予測分析
 
第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 大量データ処理アーキテクチャの構築
 

Kürzlich hochgeladen

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Kürzlich hochgeladen (9)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

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