C# でクラスライブラリを開発することになった。テスティングフレームワークである NUnit を使ってテストコードを書きながら開発したい。
上記二点がテスティングフレームワークを使う理由。
﹁テストコードを使って、自動的にテストができる﹂というのは、テスティングフレームワークの利点ではない。﹁コードをテストするためのコード﹂すなわちテストコードを書いてテストするというのは、プログラマなら無意識にやってるはず。
テスティングフレームワークは、テストコードの書き方とテスト結果の出力形式を規定してくれるだけ。些細なことに思えるかもしれないが、この規定するということは重要なことだ。テスティングフレームワークを使わずに独自のルールに則って書かれたテストコードは、テスティングフレームワークのルールに則って書かれたテストコードに比べると、書いた人以外には理解しにくい。テスト結果の出力形式についても同様。
テスティングフレームワークを使って書かれたテストコードは、その構造についてある程度予想がつく。テスト結果の出力についても、どこに注意を向ければよいかわかる。ルールに則って書かれてるんだから当たり前。それがテスティングフレームワークを使う理由だ。もちろん、テスティングフレームワークが提供する便利な機能を利用するのも理由の一つではある。
たとえば、ASP.NET を使わなくてもウェブアプリケーションは書ける。でも、ASP.NET を使うとフレームワークに則ったウェブアプリケーションを書ける。その結果、アプリケーションは共通の基盤に則った構造を持ち、構造と出力形式について予想が付く。
NUnit - Home http://nunit.org/
ダウンロードページから NUnit-2.2.0.msi http://www.nunit.org/downloads/NUnit-2.2.0.msi をダウンロード。Next 連打でインストール完了。
テストコードを書く。 ここで NUnit でテストを実行。テストが失敗することを確認する。実装がないので、すべてのテストが失敗するはず。
適宜 NUnit でテストを実行しながら実装コードを書く。 全部のテストが成功すれば完了。
テストコードを記述したクラスから、実装コードを記述したクラスを﹁プロジェクト参照﹂で参照する。 ソリューションエクスプローラ上にある、テストコードを記述したクラスの﹁参照設定﹂を右クリックして﹁参照の追加﹂を選択。﹁プロジェクト﹂タブから実装コードを記述したクラスを選択する。
テストコードを記述したクラスから、NUnit の DLL を参照する。 ソリューションエクスプローラ上にある、テストコードを記述したクラスの﹁参照設定﹂を右クリックして﹁参照の追加﹂を選択。﹁.NET﹂タブから nunit.framework を選択する。 テストコードを記述したクラスで using NUnit.Framework; を追加しておく。
実装コードを記述したクラスと、テストコードを記述したクラスの名前空間は同じものにしておく。
いちおうこれで準備完了。
ソリューションエクスプローラから、テストコードを記述したプロジェクトのプロパティを開く。 構成プロパティのデバッグの開始動作のデバッグモードを﹁プロジェクト﹂から﹁プログラム﹂に変更して適用ボタンを押す。 デバッグモードが﹁プログラム﹂になると、スタートアプリケーションのパスを指定できるようになるので、NUnit GUI のパスを指定する。私は以下をコピー & ペーストした。 C:\Program Files\NUnit 2.2\bin\nunit-gui.exe
あとはテストコードを記述したプロジェクトを﹁スタートアッププロジェクト﹂に指定してデバッグ実行すると、自動的に NUnit GUI が立ち上がる。ただ、立ち上がるだけで自動的にテストを実行してはくれないみたい。自動的にやる方法はあると思うけど調べてない。
2005年06月15日追記。自動起動するように設定するよりも、NUnit GUI あらかじめ起動しておく方が私に合っていることに気づいた。2005-06-15 の﹁NUnit はテストコードの更新を自動検出してくれる﹂を参照。
- NUnit を使うと何がいいのか
テストの結果を可視化しやすい。 NUnit というフレームワークに則ってテストできる。上記二点がテスティングフレームワークを使う理由。
﹁テストコードを使って、自動的にテストができる﹂というのは、テスティングフレームワークの利点ではない。﹁コードをテストするためのコード﹂すなわちテストコードを書いてテストするというのは、プログラマなら無意識にやってるはず。
テスティングフレームワークは、テストコードの書き方とテスト結果の出力形式を規定してくれるだけ。些細なことに思えるかもしれないが、この規定するということは重要なことだ。テスティングフレームワークを使わずに独自のルールに則って書かれたテストコードは、テスティングフレームワークのルールに則って書かれたテストコードに比べると、書いた人以外には理解しにくい。テスト結果の出力形式についても同様。
テスティングフレームワークを使って書かれたテストコードは、その構造についてある程度予想がつく。テスト結果の出力についても、どこに注意を向ければよいかわかる。ルールに則って書かれてるんだから当たり前。それがテスティングフレームワークを使う理由だ。もちろん、テスティングフレームワークが提供する便利な機能を利用するのも理由の一つではある。
たとえば、ASP.NET を使わなくてもウェブアプリケーションは書ける。でも、ASP.NET を使うとフレームワークに則ったウェブアプリケーションを書ける。その結果、アプリケーションは共通の基盤に則った構造を持ち、構造と出力形式について予想が付く。
- NUnit のインストール
NUnit のインストールは超簡単。NUnit - Home http://nunit.org/
ダウンロードページから NUnit-2.2.0.msi http://www.nunit.org/downloads/NUnit-2.2.0.msi をダウンロード。Next 連打でインストール完了。
- NUnit の使い方の概要
NUnit がやってくれるのは、ルールに則って書かれたテストコードを実行してその結果を表示してくれることだけ。テストコードは NUnit が自動生成してくれるわけじゃないので、自分で書く必要がある。NUnit を使ったテストしながらの開発は、以下のような流れで進む。テストコードを書く。 ここで NUnit でテストを実行。テストが失敗することを確認する。実装がないので、すべてのテストが失敗するはず。
適宜 NUnit でテストを実行しながら実装コードを書く。 全部のテストが成功すれば完了。
- NUnit の使い方の具体例
実装コード用のクラスとは別に、テストコードを記述したクラスを用意する。テストコードを記述したクラスから、実装コードを記述したクラスを﹁プロジェクト参照﹂で参照する。 ソリューションエクスプローラ上にある、テストコードを記述したクラスの﹁参照設定﹂を右クリックして﹁参照の追加﹂を選択。﹁プロジェクト﹂タブから実装コードを記述したクラスを選択する。
テストコードを記述したクラスから、NUnit の DLL を参照する。 ソリューションエクスプローラ上にある、テストコードを記述したクラスの﹁参照設定﹂を右クリックして﹁参照の追加﹂を選択。﹁.NET﹂タブから nunit.framework を選択する。 テストコードを記述したクラスで using NUnit.Framework; を追加しておく。
実装コードを記述したクラスと、テストコードを記述したクラスの名前空間は同じものにしておく。
いちおうこれで準備完了。
- NUnit GUI の自動起動
デバッグ実行時に NUnit GUI が起動するように設定する。これをやらなくても NUnit を使うことはできるけど、やっておいた方が便利。ソリューションエクスプローラから、テストコードを記述したプロジェクトのプロパティを開く。 構成プロパティのデバッグの開始動作のデバッグモードを﹁プロジェクト﹂から﹁プログラム﹂に変更して適用ボタンを押す。 デバッグモードが﹁プログラム﹂になると、スタートアプリケーションのパスを指定できるようになるので、NUnit GUI のパスを指定する。私は以下をコピー & ペーストした。 C:\Program Files\NUnit 2.2\bin\nunit-gui.exe
あとはテストコードを記述したプロジェクトを﹁スタートアッププロジェクト﹂に指定してデバッグ実行すると、自動的に NUnit GUI が立ち上がる。ただ、立ち上がるだけで自動的にテストを実行してはくれないみたい。自動的にやる方法はあると思うけど調べてない。
2005年06月15日追記。自動起動するように設定するよりも、NUnit GUI あらかじめ起動しておく方が私に合っていることに気づいた。2005-06-15 の﹁NUnit はテストコードの更新を自動検出してくれる﹂を参照。
- NUnit 用のテストコードの書き方の概要
[TestFixture] 属性を付けたクラスは、テストクラスとして NUnit に認識される。 [Test] 属性を付けたメソッドは、テストメソッドとして NUnit に認識される。 [Test] 属性を付けたメソッド中で NUnit.Framework.Assert() を使って値をテストする。
すべての記事の見出し (全1029件)
●すべての記事の見出し (カテゴリ別表示)
●すべての記事の見出し (時系列順で表示)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。
●.net (57件) ●2ch (19件) ●amazon (5件) ●Apache (22件) ●bash (13件) ●Bookmarklet (9件) ●C# (45件) ●chalow (18件) ●ChangeLog メモ (20件) ●coLinux (2件) ●CSS (5件) ●Delphi (5件) ●DVD (6件) ●Excel (1件) ●F-ZERO (4件) ●FF12 (31件) ●ftp (8件) ●Google (21件) ●gpg (7件) ●HTML (19件) ●http (19件) ●IE(10件) ●IIS (4件) ●iPod (2件) ●JavaScript (14件) ●Linux (63件) ●MCP (6件) ●Mozilla (14件) ●MS SQL Server (30件) ●MySQL (4件) ●Namazu (3件) ●PC(48件) ●Perl (58件) ●PHP (2件) ●Postgres (36件) ●proftpd (2件) ●qmail (1件) ●RFC (4件) ●RSS (33件) ●Ruby (15件) ●samba (3件) ●sonic64.com (6件) ●SQL (15件) ●Squid (3件) ●ssh (7件) ●Subversion (3件) ●unix (31件) ●VSS (2件) ●Windows (34件) ●winny (9件) ●XML (9件) ●xyzzy (17件) ●おいでよ どうぶつの森 (19件) ●お菓子 (5件) ●アスキーアート (13件) ●アニメ (9件) ●クレジットカード (2件) ●ゲーム (120件) ●シェルスクリプト (18件) ●シレン2(8件) ●セキュリティ (9件) ●ソフトウェア (21件) ●デザインパターン (2件) ●ネットワーク (30件) ●バックアップ (17件) ●プログラミング (14件) ●マリオカートDS(3件) ●メール (26件) ●メモ (116件) ●ラーメン (11件) ●音楽 (59件) ●給油 (3件) ●三国志大戦 (13件) ●車 (7件) ●書斎 (4件) ●食 (30件) ●買い物 (17件) ●簿記 (8件) ●本 (32件) ●漫画 (9件) 直近30日分の記事 2007-04-23 (Mon) ●PC: 開発用の新PC東芝EQUIUM 5170のメモ 2007-03-07 (Wed) ●Mozilla: Mozilla Thunderbird で引用の色つき表示と引用符変更 2007-02-27 (Tue) ●ソフトウェア: Excel: Excel でシートを自動縮小して最適な横幅で印刷する 2007-01-17 (Wed) ●本: ソフトウェア見積りを読了 2007-01-15 (Mon) ●メモ: お年玉付き年賀状の当選番号 平成19年 2007-01-14 (Sun) ●本: クレジットカード: クレジットカードのごほうびを読了 2007-01-08 (Mon) ●本: デッドラインを読了 2006-12-01 (Fri) ●アニメ: DVD: 機動戦士ガンダム0083第一話 ガンダム強奪を視聴 2006-11-22 (Wed) ●メモ: ブックオフの会員カードとポイントがツタヤTポイントに移行 2006-11-20 (Mon) ●ソフトウェア: OpenOffice.org Calc でセル内で改行する 2006-11-19 (Sun) ●クレジットカード: メモ: すべての買い物が1%割引になるクレジットカード P-One カードを申し込んだ 2006-09-30 (Sat) ●メモ: 忙しいとメモ書かなくなっちゃうけど 誰にだって一、二度はあること 2006-08-29 (Tue) ●MS SQL Server: SQL: MS SQL Server でDBから SQL スクリプトを生成する手順とオプション 2006-08-04 (Fri) ●ゲーム: 8月4日はレイストーム作戦発動日 - Operation Raystorm 2006-07-27 (Thu) ●メモ: 買い物: ダイソーの157円ストップウォッチの精度を測る 2006-07-23 (Sun) ●本: 書斎: 立花隆の机は幅200cm、奥行き100cmで45万円 2006-07-17 (Mon) ●ゲーム: スーパーソニックの壁紙 2006-07-10 (Mon) ●本: 書斎: インターネット書斎術を読了 2006-07-06 (Thu) ●本: 書斎: リンボウ先生の書斎のある暮らしを読了 2006-07-03 (Mon) ●メモ: 書斎: 書斎を作る 2006-06-29 (Thu) ●食: ボウモア・シングルセレクト シングルモルトウイスキーを飲む 2006-06-28 (Wed) ●ネットワーク: http: HTML: robots.txt でロボット避け 2006-06-27 (Tue) ●本: Google: グーグル - Google 既存のビジネスを破壊する を読了 2006-06-25 (Sun) ●メモ: シグマ Σ の意味と計算方法 2006-06-19 (Mon) ●ネットワーク: PC: BUFFALO LSW-TX-24NSR 24ポートスイッチングハブを購入 2006-06-18 (Sun) ●ゲーム: FF12: ヤズマット討伐完了 2006-06-15 (Thu) ●Windows: unix: cygrunsrv が CPU を消費して Windows Update できない件の対処 2006-06-11 (Sun) ●音楽: メモ: 星の世界と賛美歌312番﹁いつくしみ深き﹂は同じ旋律 2006-06-01 (Thu) ●メモ: 簿記: 電卓のGTと M+ MRC キーの使い方 2006-05-30 (Tue) ●メモ: 至上命題ではなく至上命令 プロファイル 斎藤 宏明。エンジニアです。宇都宮市に住んでいます。 リンク ●そらはや情報 ●禁断の壷2ちゃんねるターボ用 proxy 自動設定ファイル ●Planet .NET Japan RSS ●
記事全文入りRSS (直近数日分)
●
記事全文入り RSS (全記事分)
スポンサードリンク
Powered by
☆さくらインターネット☆
●.net (57件) ●2ch (19件) ●amazon (5件) ●Apache (22件) ●bash (13件) ●Bookmarklet (9件) ●C# (45件) ●chalow (18件) ●ChangeLog メモ (20件) ●coLinux (2件) ●CSS (5件) ●Delphi (5件) ●DVD (6件) ●Excel (1件) ●F-ZERO (4件) ●FF12 (31件) ●ftp (8件) ●Google (21件) ●gpg (7件) ●HTML (19件) ●http (19件) ●IE(10件) ●IIS (4件) ●iPod (2件) ●JavaScript (14件) ●Linux (63件) ●MCP (6件) ●Mozilla (14件) ●MS SQL Server (30件) ●MySQL (4件) ●Namazu (3件) ●PC(48件) ●Perl (58件) ●PHP (2件) ●Postgres (36件) ●proftpd (2件) ●qmail (1件) ●RFC (4件) ●RSS (33件) ●Ruby (15件) ●samba (3件) ●sonic64.com (6件) ●SQL (15件) ●Squid (3件) ●ssh (7件) ●Subversion (3件) ●unix (31件) ●VSS (2件) ●Windows (34件) ●winny (9件) ●XML (9件) ●xyzzy (17件) ●おいでよ どうぶつの森 (19件) ●お菓子 (5件) ●アスキーアート (13件) ●アニメ (9件) ●クレジットカード (2件) ●ゲーム (120件) ●シェルスクリプト (18件) ●シレン2(8件) ●セキュリティ (9件) ●ソフトウェア (21件) ●デザインパターン (2件) ●ネットワーク (30件) ●バックアップ (17件) ●プログラミング (14件) ●マリオカートDS(3件) ●メール (26件) ●メモ (116件) ●ラーメン (11件) ●音楽 (59件) ●給油 (3件) ●三国志大戦 (13件) ●車 (7件) ●書斎 (4件) ●食 (30件) ●買い物 (17件) ●簿記 (8件) ●本 (32件) ●漫画 (9件) 直近30日分の記事 2007-04-23 (Mon) ●PC: 開発用の新PC東芝EQUIUM 5170のメモ 2007-03-07 (Wed) ●Mozilla: Mozilla Thunderbird で引用の色つき表示と引用符変更 2007-02-27 (Tue) ●ソフトウェア: Excel: Excel でシートを自動縮小して最適な横幅で印刷する 2007-01-17 (Wed) ●本: ソフトウェア見積りを読了 2007-01-15 (Mon) ●メモ: お年玉付き年賀状の当選番号 平成19年 2007-01-14 (Sun) ●本: クレジットカード: クレジットカードのごほうびを読了 2007-01-08 (Mon) ●本: デッドラインを読了 2006-12-01 (Fri) ●アニメ: DVD: 機動戦士ガンダム0083第一話 ガンダム強奪を視聴 2006-11-22 (Wed) ●メモ: ブックオフの会員カードとポイントがツタヤTポイントに移行 2006-11-20 (Mon) ●ソフトウェア: OpenOffice.org Calc でセル内で改行する 2006-11-19 (Sun) ●クレジットカード: メモ: すべての買い物が1%割引になるクレジットカード P-One カードを申し込んだ 2006-09-30 (Sat) ●メモ: 忙しいとメモ書かなくなっちゃうけど 誰にだって一、二度はあること 2006-08-29 (Tue) ●MS SQL Server: SQL: MS SQL Server でDBから SQL スクリプトを生成する手順とオプション 2006-08-04 (Fri) ●ゲーム: 8月4日はレイストーム作戦発動日 - Operation Raystorm 2006-07-27 (Thu) ●メモ: 買い物: ダイソーの157円ストップウォッチの精度を測る 2006-07-23 (Sun) ●本: 書斎: 立花隆の机は幅200cm、奥行き100cmで45万円 2006-07-17 (Mon) ●ゲーム: スーパーソニックの壁紙 2006-07-10 (Mon) ●本: 書斎: インターネット書斎術を読了 2006-07-06 (Thu) ●本: 書斎: リンボウ先生の書斎のある暮らしを読了 2006-07-03 (Mon) ●メモ: 書斎: 書斎を作る 2006-06-29 (Thu) ●食: ボウモア・シングルセレクト シングルモルトウイスキーを飲む 2006-06-28 (Wed) ●ネットワーク: http: HTML: robots.txt でロボット避け 2006-06-27 (Tue) ●本: Google: グーグル - Google 既存のビジネスを破壊する を読了 2006-06-25 (Sun) ●メモ: シグマ Σ の意味と計算方法 2006-06-19 (Mon) ●ネットワーク: PC: BUFFALO LSW-TX-24NSR 24ポートスイッチングハブを購入 2006-06-18 (Sun) ●ゲーム: FF12: ヤズマット討伐完了 2006-06-15 (Thu) ●Windows: unix: cygrunsrv が CPU を消費して Windows Update できない件の対処 2006-06-11 (Sun) ●音楽: メモ: 星の世界と賛美歌312番﹁いつくしみ深き﹂は同じ旋律 2006-06-01 (Thu) ●メモ: 簿記: 電卓のGTと M+ MRC キーの使い方 2006-05-30 (Tue) ●メモ: 至上命題ではなく至上命令 プロファイル 斎藤 宏明。エンジニアです。宇都宮市に住んでいます。 リンク ●そらはや情報 ●禁断の壷2ちゃんねるターボ用 proxy 自動設定ファイル ●Planet .NET Japan RSS ●
![RSS RSS](/img/rss.png)
![RSS full archive RSS full archive](/img/rss.png)
![](http://www14.a8.net/0.gif?a8mat=ZYT5C+7BR1RM+D8Y+61C2Q)