F#でUnitTest

やりたいこと

Visual Studio 2012に統合された形でF#のUnitTestを書きたい/動かしたい。

xUnit.netを使う場合

特にテスティングフレームワークには拘りはないのだけど、なんとなくNUnitよりもxUnit.netの方が好きなので、動くようにしてみた。FsUnitというやつを被せればF#でも使えるみたい。

環境構築

Visual Studio上で動くTestRunnerを用意する。xUnit.net runnerをインストールした。

Visual Studioに統合しなくてもよい場合(もしくはExpress Editionを使う場合)は、普通にhttp://xunit.codeplex.com/からパッケージをダウンロードしてきて、外部ツールとして登録するなり、プロジェクトのデバッグ設定で外部ツール実行を設定するなりしとけばよいはず。少し情報が古いけど、プログラミング/C#/Express Edition でのテスト駆動型開発 - takeuchi@ShigekawaLabと同じような手順で設定できるとは思うものの、自分が使わないので未検証。

テストプロジェクトの作成
  1. F#ライブラリとしてプロジェクトを作成する(xUnit.net用のプロジェクトテンプレートとかないので仕方ない)。
  2. 作成したテストプロジェクトにNuGetで FsUnit.xUnit をインストール。
  3. テストコードを書く。サンプルコードはhttps://github.com/dmohl/FsUnitのExamples->xUnitを参照。

ここまでやってしまえば、Visual Studio上でテストを実行できる。

NUnitを使いたい場合(試してない)

上記と同様に、まずNUnitを動かす環境を用意してから、NuGetでFsUnitを取ってきて使えばよいはず。

MSTestでよい場合

F# Unit Test Templateを入れるだけ。F#用のMSTestプロジェクトが作れるようになる。