.NET Tools
3.空のメソッドを書いてNUnitを実行してみる (株)ピーデー 川俣 晶2003/04/26 |
|
|
空のメソッドを書く
さて、テスト・メソッドが書けたとはいえ、これだけではコンパイルを通らない。何しろ呼び出し先のクラスがまだ存在しないのだから仕方がない。そこで、呼び出し先クラスを作成して、コンパイルできるようにしよう。
まず、ServerAppTestプロジェクトにMaxDataSizeRecorderクラスを追加する。その中に、コンパイル・エラーが出ないようにするための最低限度のコードだけを書き込む。以下のような感じだろうか。
|
|
コンパイル・エラーが出ないように最低限度のコードだけを書き込んだMaxDataSizeRecorderクラス(C#版) |
|
|
コンパイル・エラーが出ないように最低限度のコードだけを書き込んだMaxDataSizeRecorderクラス(VB.NET版) |
くどくど説明を要することは何もないだろう。メンバ変数NameとPointは、アクセサを付けないと(プロパティにしないと)気持ちが悪いかもしれないが、当面は放置しておこう。いまのところ、クラスの実装の良し悪しは考えないでおく。
これでエラーなくビルドできるようになったはずである。とうとう今回のテーマであるNUnitを実行する準備が整った。
ここで、「ちょっと待て」と思った人がいるかもしれない。まだ何も具体的な実装コードを書き込んでいないのに、NUnitを実行してしまうというのか、と。まさにそのとおり。いまこそが、NUnitを実行すべき最初のときなのである。
NUnitを実行する
まず、[スタート]メニューの[プログラム]−[NUnit V2.0]−[NUnit-Gui]を実行して、「NUnit-Gui」を開こう。そして[File]メニューから[Open]を選び、たったいまビルドしたテストのプロジェクトの生成結果(DLLファイル)を開こう。今回筆者が作成したものは、「ServerAppTest.dll」というファイル名のDLLになっていたので、これを指定した。
すると以下のような画面になる。
NUnitの実行画面 |
このプログラムは、[スタート]メニューの[プログラム]−[NUnit V2.0]−[NUnit-Gui]から実行する。画面は、テスト用のプロジェクトをビルドして生成される「ServerAppTest.dll」を開いたところ。 |
これでテスト実行の準備はすべて完了である。ウィンドウ内の[Run]ボタンをクリックしよう。テストが実行され、以下のような画面を見ることができるだろう。
[Run]ボタンをクリックしてテストを実行した画面 | ||||||||||||
|
では、ウィンドウの内容を説明しよう。ウィンドウの左側は、テスト項目をツリー表示している。最上位の名前は指定したDLLファイルのフルパスが表示されている。その下の階層は名前空間名、その下はクラス名である。さらにその下にテスト・メソッドの名前が列挙されている。これらの名前の前に赤丸が表示されているのは、テストに失敗したという印である。右側に見えるRunボタンは、すでにお分かりの通り、テスト実行を行う機能を持つ。その下に、赤いバーが見えるが、これはテストの進行を示すとともに、結果を色で表現する役割を持つ。赤いバーが見えているときは、テストに失敗しているということである。これが緑のバーになれば、テストに成功したことを示す。
その下に、いくつかのタブがある。ここでは、[Errors and Failures]というタブが選択されているが、通常はここにテスト結果が表示される。このタブでは、3つのテスト失敗に関する情報が表示されている。これらの情報は、AssertEqualsメソッドやAssertメソッドによってもたらされたものである。例えば、
Constructor: recorder.Name expected: <NoName> but was: <(null)>
という表示は、Constructorはテスト・メソッド名、recorder.Nameはメッセージとして指定した文字列、NoNameは期待する値、(null)は実際の値(null値であったこと)を示している。このリストから特定の項目を選択すれば、さらにその下に、発生したコードのファイル名や行番号などの詳細情報が表示される。
さて、ここでテストが失敗するのは当たり前である。何しろ、実装はまだ何一つ書き込んでいないのである。だがこれは無意味な失敗ではない。なぜなら、テスト・メソッドにバグが入り込んでいて、失敗するはずの条件を正しいと誤判断する可能性があるからだ。実装が何も含まれないクラスをテストして、テスト・メソッドの数と同じ数だけ失敗が報告されることが確認できれば、テスト・メソッドは間違いなく失敗を失敗として伝える能力があることを証明できる。間違った結果を正しいと報告してしまうメソッドは含まれていない、と自信を持つことができるのである。もちろん、これは100%完全な保証ではないが、何もしないよりははるかに信頼性が高い。
コラム: テストの準備と後かたづけ 以下は特定のファイルの内容をチェックするテスト・プログラムの例である。
このサンプル・コードでは、チェック対象のファイルを作成して準備するメソッドにSetUp属性が付けられ、テスト終了後にそのファイルを取り除くメソッドにTearDown属性が付加されている。 |
INDEX | ||
[.NET Tools] | ||
NUnit入門 Test Firstのススメ [NUnit 2.0対応版] | ||
1.NUnitの環境を準備する | ||
2.何はさておき、最初にテストを書こう | ||
3.空のメソッドを書いてNUnitを実行してみる | ||
4.プログラム本体を実装する | ||
5.唐突な仕様変更に対応する | ||
「.NET Tools」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|