kei0425tan’s blog

技術的なことを主に

Microsoft Fakes Frameworkについて

2015/12課会資料

Microsoft Fakes Frameworkについて

Visual Studio 2012から単体テスト用にMicrosoft Fakes Framework(以下MS Fakes)が追加されました。
MS Fakesとは簡単にいうと、.Net Frameworkバイナリレベルのスタブ作成フレームワークになります。

例:
Using s = Microsoft.QualityTools.Testing.Fakes.ShimsContext.Create()
System.Fakes.ShimDateTime.NowGet = Function() New DateTime(2000, 1, 1)
' ここからDateTime.Nowを呼ぶと上記の関数が呼ばれ、常に2000/1/1が返る
End Using

バイナリレベルで埋め込まれるため、上記Usingの間では他のライブラリの内部で利用していても、すべてDateTime.Nowの呼び出しは、2000/1/1になります。

ちょっと工夫をすることにより、例えばサーバとの連携(REST APIやDBなど)も全てMS Fakesで置き換え任意のコードが実行できるため、今まで単体テストが不可能(もしくはサーバの状態により安定しない)だったものが安定して単体テストできるようになります。

デメリット
・VisualStudioのエディションが全部入り(2015ではEnterprize)でないと利用できない。(communication, professionalなどにはない)
・ビルドの時間が掛かるようになる。
・情報が少ない。