xUnit.netを使ってみる
NUnitの後継らしいです。
Ninjectで使っていたのでちょっと見てみました。たとえばこんな感じで使っています。
[Fact] public void ProviderReturnsConstantValue() { var sword = new Sword(); provider = new ConstantProvider<Sword>(sword); var result = provider.Create(contextMock.Object); result.ShouldBeSameAs(sword); }
最後の行のShouldBeSameAsが拡張メソッドになっていてこれがアサートの役割を果たします。最初これ、xUnit.netの機能かと思っていたのですが、xUnit.netのコードをみてもそんなのない。xunit.shouldというプロダクトがあるのでした。
ShouldExtensions.csのコードを見ればわかるとおり、result.ShouldBeSameAs(sword)はAssert.Same(sword, result)のエイリアスですね。
Visual Studio付属のユニットテストツールMSTestに比べてどれだけ便利かはまだよくわかっていません。
ところで、MSTestを使ってもxunit.shouldと同じように拡張メソッドをつくればShoudXxxといったメソッドでアサートできますね。英語の文章みたいにテスト書きたい人はこの方法は便利かもしれません。JUnit4のassertThatよりも簡単にかけそうな気がします。
Visual Studio 2010 beta2 でxunitを簡単に動くようにするには
まずは、Resharperを入れる。Visual Studio単体では使いにくくてしかたないです。いまは評価版つかっていますが、あれだけ便利なるなら買わざるを得ないですね。Resharperは、Visual Studio 2010 beta2用のbuil#1611を使います。
次は、Resharperと連動するxUnit.net Contribをセットアップします。0.3.2を入れます。
解凍して、C:\Program Files (x86)\JetBrains\ReSharper\v5.0\Bin\pluginsの下にコピーします。
C:\Program Files (x86)\JetBrains\ReSharper\v5.0\Bin\plugins\xunitcontrib.resharper.5.0.1609
これでテストメソッドやテストクラスやフォルダを選択して実行できます。