MonoDevelop で NUnit を使ってみた。(Mac でだけど、多分 Win や Linux でも行けるはず)
発端
なんか話の流れで ↓ MonoDevelop の NUnit や Git のサポートについて発表することになってしまいました。
@quwahara @atsushieno 今回桑原さんが作業されているのを見て、NUnitとかGitとかの話が需要があるのかな?と思いました。
— 七誌さん (@7shi) 8月 4, 2012
@7shi @atsushieno VS 使ってる人、特に VS2008以前を使ってる人には NUnit とか Git が開発環境に統合されているという発想がない気がするから、そこは「ばばん」と宣伝して欲しいですね
— 桑原 光昭さん (@quwahara) 8月 4, 2012
@quwahara @atsushieno 私はずっとExpressなので、やっぱり統合されているという発想がないです。使い方もよく分かっていません。もし取り上げるとしたら桑原さんにセッションをお願いすることはできますか?
— 七誌さん (@7shi) 8月 4, 2012
といっても自分は MonoDevelop について「にわか」ユーザなので、まずは NUnit について Hello, World 的なことをやってみました。
ソリューションを作ろう
まずは NUnit のソリューションを作りましょう。
MonoDevelop を立ち上げて、画面左上の「Start New Solution..」をクリック。
Wizard が始まります。
左手のツリーから「C# > NUnit」を選択。
真ん中のペインから「NUnit ライブラリプロジェクト」を選択。
「名前(a):」にとりあえず「MyNUnit1」と入力。
「ソリューション名(s):」欄は魔法少女が入力してくれます。
ここで「NUnit ライブラリプロジェクト」を選択しないと、右下の「進む」ボタンが押せません。
そんなことでハマるのは私だけですか、そうですか。
では「進む」ボタンをクリック。
次に 「GTK#サポート」について聞いてくるんですが、まだよくわかんないのでガン無視で「OK」ボタンをクリック。
さあ、これで素敵な単体テストスタブが焼き上がりましたね!
みんな大好き、NUnit のアトリビュートがぺたぺた付いてます。お得ですね!
〜 ちょっと脇道、ビューとパッド 〜
しばらく使ってて気づかなかったんですが、
Eclipse で「パースペクティブ」って読んでるやつが、MonoDevelop では「ビュー」になってます。
Eclipse でワークスペースのツリー表示、VS で「ソリューション・エクスプローラー」などを表示する画面は
MonoDevelop では、「パッド」と呼ぶようです。
単体テスト / NUnit を実行する。
それではとっとと実行してみましょう。
「実行 > 単体テストを実行」をクリック。
画面下にテスト結果、画面右にテスト項目のツリーがでました。
分かり易くてはかどりますね。
折角なので、失敗するテストも流しましょう。
まずは失敗するテストメソッドを書きました。
「TestCaseToBeFailed ()」がそれです。
そして同じように「実行 > 単体テストを実行」をクリック。
画面右のツリーでは失敗した項目が赤丸になります。
画面下にテスト結果には
- 失敗したメソッド
- 失敗した Assert の内容 (Expectedふんにゃらはんにゃら、But wasほんたらかんたらのやつ)
- その箇所のスタックトレースがでます。
もちろん、スタックトレースの箇所をダブルクリックすると、その箇所に飛んでいってくれます。
便利ですね!
再び「良い子になる!」と失敗するテストメソッドを書き変えて同じように実行します。
めでたくテストは成功しました。
ブレークポイントを張ってみよう
どうも単体テスト実行では、ブレークポイントを張っても効かないようでした。
ブレークポイントを張って単体テスト実行をしてもぬるっと実行が終わってしまいます。
そこで「実行 > Start Debugging」をクリックします。
そうすると
「もうアプリが1っこ動いてて、止めにゃならんが、それでも続けんの?」
とか聞いてくるので、
とりあえず日本人らしく
「はい」
と答えます。
そうするとご覧のようにブレークポイントで停止します。
ローカル変数の内容もちゃんとみれますね。
実行の再開は、
- 「歯車2つに緑のワンポイント」のアイコン
- 「実行 > Continue debugging」
のいずれかを押します。
とりあえずこれで、NUnit のとっかかりにはなるかなぁと思います。
ではでは ノシ
(追記)
MonoDevelop 3.0.3.5 で行いました