matarillo.com

The best days are ahead of us.

31日間ReSharper一周 Day 5: 統合されたユニットテストランナー

2012-12-30 18:17:12

元記事

31日間ReSharper一周」の5日目へようこそ。今日はReSharperのユニットテストランナーを紹介する。

(ReSharperのユニットテストランナーは無料で別個にダウンロードすることもできる。もし完全なReSharperが不要ならばね。)

しかし、なぜ世界に更なるユニットテストランナーが必要だったのか?テストを実行する方法はすでにたくさんあるわけだし。NUnit GUIもあるし、NUnitコンソールランナーもある。MSBuildでソリューションをビルドした後NUnitコンソールを実行するようなrakefileを書いて、そのファイルを呼び出すようにツールメニューのオプションを設定して、それに対してキーストロークを割り当てることもできる(僕はそうしている)。TestDriven.NETをインストールしてもいい。(Microsoft謹製テストランナーに大枚をはたいたっていい。実際にはテストを実行させてくれないとしても。)これで選択肢は全部カバーできてない?

そうかもしれない。でも、ReSharperのテストランナーはピカイチだ。IDEのアドインだから、うまく統合されている。では見ていこう。

テストを全部実行する

前にもぶーたれたことがあることだし、テストツールのいっちばん基本的な機能から始めよう。全テストの実行だ。

もちろんReSharperでできるし、それに簡単だ。全テストを実行する一番よい方法は、ReSharperAddIn25.UnitTestRunner_RunAllSolutionコマンドにキーストロークを割り当てることだ(僕らはCtrl+Shift+Tにしてる)。そうすれば、Ctrl+Shift+Tを叩けばいつでも、自動的にソリューションがビルドされ、全テストが実行され、結果に応じて緑(または赤)のバーが表示される。

もしそこまで簡単にしたくないのなら、ReSharperメニュー > Unit Testing > Run All Tests from Solution を実行するのでもいい。Unit Testingメニューにはあと2つほど別のオプションがあるけど、僕は無視してる。全テストを実行する以外のことをするように見えるからだ――今のところ、NUnitのテストをすばやく実行することでかなりうまくやれている。

対応しているテストランナー

追加設定なしで、ReSharperのテストランナーはNUnitcsUnitのテストに対応してる。ReSharperのUnitRunをmbUnitに対応させるサードパーティのアドインもある。

統合

ReSharperのテストランナーアドインはVisual Studioの中にいることを本当にフル活用する。

  • ドッキング可能。テストランナーのウィンドウはIDEの他のウィンドウとまったく同じようにドッキング可能だから、邪魔にならないところに押し込んでおくこともできる。僕はIDEの一番下のところの、「出力」ウィンドウや各種「検索結果」ウィンドウのタブにくっつけている。(タブの中に置いておいたとして、テスト実行時にもし別のタブが表示されていたら、テストランナーのウィンドウが前面にくる。期待通りにね。)
  • キー割り当て可能。上でも書いたが、1キーストロークが「全部ビルドして、全部テストして、結果を赤や緑のバーで表示する」に割り当てられているのは超楽。マジで楽。
  • 注意を払う。コードを変更してリビルドすると、テストツリーの全アイコンが小さいクエスチョンマークに変わるから、まだテストされていないことが見てわかる。でも色はそのままだから、前回はどれが成功でどれが失敗だったかも見ればわかる。以下は「最新の実行」(チェックマーク)と「リビルド後」(クエスチョンマーク)のスクリーンショットだ。

    さらに賢いのは、ソリューションをビルドしたときに、実際にはコードを何もいじっていなかったなら、クエスチョンマークにはならないんだ。(この機能はありがたい。なにしろ、しゃべったりなんかするとすぐ気が散って、テストを実行したかどうかも覚えてられないからだ。)
  • コードへジャンプ。これには素晴らしい機能が2つある。1つ目。テストツリー上のテストをダブルクリックすれば、そのテストのコードがエディタに表示される。2つ目。テストが失敗したら、テスト結果ペインの呼び出しスタック中にハイパーリンクが出力され、そのうちの1つをクリックすればエディタでその場所へジャンプする。
  • テストを走らせたりデバッグしたりするガター(左余白)アイコン。テストメソッドを発見すると、ReSharperはコードの隣のガターに緑と黄色の小さい円を表示する。その円をクリックするとドロップダウンメニューが表示される。メニューの中にはそのテストをデバッガで実行するオプションがある。だからテスト中にブレークポイントを設定してデバッグしたいなら簡単にできる。

実のところ、ReSharperのユニットテストランナーの機能には別段革新的なものはない。「コードにジャンプする」機能はかなりすばらしいけどね。要は、機能が全部そろっていて、どれもちゃんと使えるってだけだ。ユニットテストをするんなら、ReSharperのテストランナーを試してみるといい。


31日間ReSharper一周 インデックスへ戻る