たとえば、「あるクラスのあるメソッドが正しく実装できているか」をソフトウエア自体でテストしてしまおう、それがUnitTestです。
もちろん、テストコード自体は各自が必要に応じて作成する必要があります。
が、そのテストコードを実行して「成功」とか「失敗」とか表示するような共通部分を毎回作る必要はありません(誰かが一度作ってくれれば)。
そういった「共通部分」のことをテスティングフレームワークなどと呼びます。
いまでは、いろいろなテスティングフレームワークがオープンソースで公開されています。
たとえば、Java用のJUnit、C++用のCppUnit、Ruby用のRubyUnitなどなどです。
で、NUnitはC#で実装されたオープンソースの.NET用テスティングフレームワークです。
NUnit.orgからダウンロードしてセットアップするだけです。
eXtremeProgramming FAQ の「Unit Test/ツールへのリンク集」に「NUnit 利用ガイド」というのがあります。 とてもよく書かれているので、ぜひ、一度読んでみてください。 ただ、残念ながらNUnit 1.11を前提に書かれているので、その点だけは注意してください。
NUnitはVer1.xとVer2.0では結構変わっています。 NUnit2.0でも1.xのコードでも問題なく使えるらしいんですが、せっかくなので2.0での使い方を書いておきます。
かなり意図的ですが(^^; 以下のようなクラスがあったとします。
このクラスのDivisionメソッドのテストコードを書いてみましょう。
|
|
Visual Studio.NET(以下 VS.NET)でテスト用のプロジェクトを作成する手順は以下のような感じになります。
これだけの準備をしておけばテストコードが書けます。
|
|
こんな感じです。
このようにNUnit2.0では、
といったところがNUnit1.xとの大きな違いです。
あと、テスト用のクラスはXxxTestCaseのように「名前」+「TestCase」というクラス名にするのが一般的でした。
けど、NUnit2.0ではサンプルとかドキュメントとかが一貫してXxxTestという名前になっています。
とりあえず、NUnit2.0にあわせましたが、どっちがいいのかはよくわかりません。
さて、これをコンパイルしてNunit-Gui.exeで読み込んで「Run」すればテストが実行されます。 上記のテストは必ず成功するはずなのでみごとに緑色になるはずです。
毎回、わざわざNunit-Gui.exeを起動するのが面倒という場合は、VS.NETで、
としておけば、VS.NETで実行すればNunit-Gui.exe が自動的に起動します
(起動するだけで自動的にテストを実行してくれるわけではありません)。
ただ、VS.NETからNunit-Gui.exeを起動すれば、どこかが赤くなったら(テストに失敗したら)
該当するテストメソッドにブレークポイントを仕掛けて、トレースで原因を調査することができます。
もっと自動化したいときはNunit-Console.exeを使えばいいでしょう。 こちらを使うとテスト結果をXMLファイルとして保存することができます。 その上で中西氏のVB.NETとC#でデザインパターン にある「Nunit V2.0のnunit-console.exeで出力されたXMLテスト結果レポートをHTMLに変換します」 のようなツールを使えば、テスト結果をHTML化することができます。 うまく使えば、テスト結果の履歴をHTMLで残すようなこともできるわけです。
他にも[SetUp]属性、[ExpectedException]属性や[Suite]属性とTestSuiteクラスといったものが用意されています。 ただ、NUnitを使うこと自体は、たいして難しいことじゃありませんし、最近では日本語での解説もいろいろありますから、 Webを検索するなりしてみてください。 それに、NUnitは他のテスティングフレームワーク(xUnit)と基本的に同じつくりになっています。 なので、NUnit自体の解説ではなくても参考になるものが多いです (NUnit2.0は属性ベースってことで、ちょっと他のとは毛色が違うところはありますが)。
むしろ、いかにちゃんとしたテストコードを書くかのほうが難しかったりします。 テストコード自体に不備があってはテストの意味がなくなっちゃいますから。