F#のコードをMSTestでテストする

C#にはあるのにF#にはなぜかテストプロジェクトがないんですよね。
でもMicrosoft.VisualStudio.QualityTools.UnitTestFramework.dllに参照通せば、一応使えるみたいです。ただResharper使ってないとうまく認識させられないかも。

F# Libraryを作って、Microsoft.VisualStudio.QualityTools.UnitTestFramework.dllに参照通して、次のようなコードを書きます。


module Module1

open Microsoft.VisualStudio.TestTools.UnitTesting

[<TestClass>]
type MyTest() =
[<TestMethod>]
member this.TestHoge() =
printfn "test"

[<TestMethod>]
member this.TestList() =
let list = [1;2;3]
Assert.AreEqual([1;2;3], list)

これで、ソリューションかプロジェクトを選んで「Run Unit Tests」を実行すればテストが実行されます。一度実行されるとReshaperのUnit Test Sessionsのビューにメソッド単位でテストがならぶので、一度実行した後ならクラスやメソッド単位でテストが実行できます。

Resharperを持っていない人はここに書いてある方法が使えるかも(試してないです)。

MSTestなら上に書いた方法で簡単に試せるのですが、MSTestよりNaturalSpecとかを使ったほうがかっこよさげです。

ResharperにはF#もサポートしてほしい。

というかVisual StudioもRenameのリファクタリングぐらいはサポートしてほしい(F#に対してはリファクタリング機能が一切ないのです)。