SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

C#で始めるテスト駆動開発入門

Visual StudioのMSTestでTDDを行う方法

C#で始めるテスト駆動開発入門(2)

NUnitとMSTest

 MSTestはVisual Studioに付属しているので、Microsoft製であるという安心感がありますし、オープンソース系のツール利用が禁じられている現場でも使うことができます。機能的には、NUnitと比べて一長一短があります。

NUnitとMSTestの比較
  NUnit(2.6) MSTest (VS2010付属)
提供 NUnit.org Visual Studio(有償版)に同梱
テストの作成 すべて手書き 製品コードから雛形を自動生成できる
※privateメソッドをテストするためのプロキシクラスも自動生成できる(注2
テスト実行 IDEとは別(GUIまたはコンソール、注3
※IDE内から実行するためのサードパーティツールはある
IDE内で実行
※コンソールからも可能
アサーションの種類 Assert.That()などもあり、先進的で豊富 保守的だが、型指定ができるなど.NET Frameworkの機能を生かしている部分もある
パラメタライズドテスト ×
※本稿で、サポートツールを紹介
データ駆動テスト ×
※もちろんそういうコードを書けば可能

※テストデータの供給は、データベースだけでなくExcelでも可能(注4を参照)
テストのデバッグ実行
(注を参照)
面倒
※デバッグ対象としてNUnitを起動する
簡単
カバレッジ計測 面倒(Premiumエディション以上)、
または、サードパーティツールを使用
簡単に取得できる(Premiumエディション以上、後述)
注2: privateメソッドのテスト

 Visual Studio 2010(有償版)は、privateメソッドにアクセスするためのプロキシクラスを自動生成してくれます。詳しくは、「Visual Studio 単体テスト機能大全(1) 改訂版 Visual Studioで作る単体テスト、基本のき(VS2010向け改訂版)(p.3)」を参照してください。

注3: Visual Studio 11とNUnitの統合

 現在はVisual Studioの中でNUnitのテストを実行するにはサードパーティ製ツールが必要ですが、Visual Studio 11ではその必要はなくなると言われています(参考 → TDD.NET「[NEWS] Visual Studio と NUnit が統合される(続) ~ Unit Test Explorer の動画」)。

注4: データ駆動テスト(Data Driven Test)とコード化されたUIテスト(Coded UI Test)

 データ駆動テストについては、「Visual Studio 単体テスト機能大全(4) Visual Studioで作るデータドリブンテスト」を参照してください。

 また、「テストを書く」という観点から表には含めませんでしたが、Visual Studio 2010の上位版には「コード化されたUIテスト」という機能もあります。こちらは、「Visual Studio 単体テスト機能大全(6) Visual Studioで作る単体テスト、UI操作の自動実行」をご覧ください。

注5: デバッグ実行

 TDDに慣れてくると、デバッグモードでテストを走らせてステップ実行することは、ほとんどなくなります。細かいステップでテストケースを追加していれば、予想外のREDが出ても、たいていは自分のミスにすぐ気づくことができるからです。そういう意味では、デバッグ実行がしやすいかどうかは、たいして問題になりません。

MSTestでテストファースト

 それでは実際にMSTestでテストファーストしてみましょう。お題は前回の記事と同じ「野球の打率計算」を使います。テストケースを作っていく順序や考え方などは、前回の記事を参照してください。ただし今回は、「お題その1」だけとします。なお、Visual Studioのユニットテスト関連機能については、WINGSプロジェクトりばてぃ氏による「Visual Studio 単体テスト機能大全」も参照してください。

Visual Studio のプロジェクトを用意する

 MSTestでは、製品コードのプロジェクトとテストコードのプロジェクトを、必ず分けて作ります。Visual Studioのユニットテストをサポートする機能が、テストコード専用のプロジェクト(テストプロジェクト)でないとテストコードを認識してくれない(テストを実行できない)からです。

作成するプロジェクト
  製品コード テストコード
プロジェクトの種類 クラスライブラリ テストプロジェクト
プロジェクトの名前 Tddbc横浜 Tddbc横浜Test
「新しいプロジェクトの追加」ダイアログ ~ テストプロジェクトは「Visual C#」-「テスト」にある
「新しいプロジェクトの追加」ダイアログ

 次に、ソリューションエクスプローラー上で、[Tddbc横浜Test]プロジェクトを右クリックし、コンテキストメニューの[参照の追加...]を使い、[プロジェクト]タブで、[Tddbc横浜]プロジェクトへの参照を追加しておきます。

次のページ
お題その1

この記事は参考になりましたか?

C#で始めるテスト駆動開発入門連載記事一覧

もっと読む

この記事の著者

biac(ばいあっく)

HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6382 2012/02/10 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー