C#たんでBDD

CoffeeScriptの続きをやろうかと思ったのですが、ちょっと気分を変えてWindowsを立ち上げてみました。
今回はVisualStudioでBDDをやるためにNSpecをちょこっと使ってみようかと思います。


Getting Started!
というわけで本家サイトへ。
NSpec - A testing framework that's like Mocha and RSpec, but for C#


基本的には本家サイトの通りに進めていきます。
適当なプロジェクトNSpecSampleを作り、NuGetでパッケージのインストール。
ちなみに.NETのバージョンは3.5と4.0に対応しているそうです。

PM> Install-Package nspec

特に問題なくインストールされました。
サンプルと同じようにコードを書きます。

class my_first_spec : nspec
{
    void given_the_world_has_not_come_to_an_end()
    {
        it["Hello World should be Hello World"] = () => "Hello World".should_be("Hello World");
    }
}

コードを書き終えたらビルドします。
dllを指定して実行するので、ちゃんとビルドしておかないと期待通りに動かない事があります。
私もビルドを忘れて動きませんでしたw


というわけで、Package Manager Consoleから以下のように実行。

PM> NSpecRunner.exe NSpecSample\bin\Debug\NSpecSample.dll

サイトのサンプル通りに結果が表示されると思います。
最初は.NETなんだから.NETの書き方に従えや!って事でメソッド名をパスカル記法で記述したのですが、テストメソッドとして認識してくれませんでしたw
クラス名やnamespaceはパスカル記法でも問題なかったです。


別にRubyの記法が嫌いなわけではないのだけれど、やはりその言語に合わせた記法で書いて欲しいとは思います。
文句言うなら自分で作れって話なわけですがw
メソッド名を日本語にしてもちゃんと動きました。

class my_first_spec : nspec
{
    void ウソみたいだろ_動くんだぜ_これ()
    {
        it["Hello World should be Hello World"] = () => "Hello World".should_be("Hello World");
    }
}

他の機能も試してみましたが、公式サイトにある通りちゃんと動作しました。
あまりにも簡単に動きすぎて書くことがなくなっちゃいました。
ハマったところとか面倒な設定周りとかを書くつもりだったのにw


IronRubyRSpecを動かすという手もありますが、特に拘りがなければNSpecで十分です。
C#で何か作ることがあったら、次はNSpecを採用してみようかなぁと密かに考えています。