連載:VSTSの単体テスト機能は本当に使えるのか?

第3回 VSTSで提供される注目すべき単体テスト機能

株式会社 アークウェイ 中西 庸文
Microsoft MVP 2006 - Solutions Architect)
2007/02/07
Page1 Page2 Page3 Page4

テスト・プロジェクトの追加

 Pet Shopをインストール後、Pet Shopソリューション(C:\Program Files\Microsoft\.NET Pet Shop 4.0\PetShop.sln)をVisual Studio 2005(以下、VS 2005)で開き、[新しいプロジェクトの追加]ダイアログで、「プロジェクトの種類」から「Visual C#」−「テスト」を選択する。テンプレートとして「テスト プロジェクト」が選択された状態でプロジェクト名には「PetShop.Tests」と入力し、ソリューションにテスト・プロジェクトを追加する。

テスト・プロジェクトの追加
VS 2005のメニュー・バーから[ファイル]−[追加]−[新しいプロジェクト]を選択すると、このような[新しいプロジェクトの追加]ダイアログが表示される。

 追加されたテスト・プロジェクトにはいくつかのテスト用テンプレートがデフォルトで含まれるが、以下のファイルは今回は使用しないので削除する。

  • ManualTest1.mht(手動テスト用のテンプレート)
  • UnitTest1.cs(単体テスト用のテンプレート)

参照の追加

 次に、テスト・プロジェクトからテスト対象のクラスを含むプロジェクトを参照できるように、テスト・プロジェクトの参照設定の追加を行う。

 VS 2005のソリューション・エクスプローラ上で、「PetShop.Tests」プロジェクトを右クリックしてコンテキスト・メニューを表示し、[参照の追加]を選択する。[参照の追加]ダイアログ上の[プロジェクト]タブを選択し、下記のプロジェクト参照を追加する。

  • BLLプロジェクト(Cartクラス(=ショッピングカート・クラス)を含むプロジェクト)
  • Modelプロジェクト(CartItemInfoクラス(=ショッピングカートに保持されるアイテム・クラス)を含むプロジェクト)
プロジェクト参照の追加
VS 2005のソリューション・エクスプローラ上で、対象のプロジェクトを右クリックしてコンテキスト・メニューを表示し、そこから[参照の追加]を選択する。これにより、参照を追加するためのダイアログが表示される。今回のテスト対象となるクラスを含むPet Shopのプロジェクト「BLL」と「Model」を選択する。

 同じく[参照の追加]ダイアログ上の[.NET]タブを選択し、「System.Data.dll」への参照も追加する。

System.Data.dll参照の追加
データ・ドリブン単体テストではデータ・アクセスが必要なため、System.Data.dllへの参照の追加が必要。

データ・ドリブン単体テストで使用するデータベースおよびテーブルの作成

 データ・ドリブン単体テストを利用するには、テスト用データを格納するためのテスト用データベースとテーブルが必要となるので、これらを作成する。

 VS 2005のサーバ・エクスプローラ上で、「データ接続」を右クリックしてコンテキスト・メニューを表示し、[新しい SQL Server データベースの作成]を選択する。Pet Shopインストール時に指定したデータベースのあるサーバ名を選択し、新しいデータベース名に「MSPetShop4UnitTest」と入力し、新しいSQL Serverデータベースを作成する。

テスト用データベースの作成
VS 2005のサーバ・エクスプローラ上で「データ接続」を右クリックしてコンテキスト・メニューを表示し、そこから[新しい SQL Server データベースの作成]を選択する。これにより、新しいSQL Serverデータベースを作成するためのダイアログが表示される。

 VS 2005のサーバ・エクスプローラ上で「MSPetShop4UnitTest」データベースの「テーブル」を右クリックしてコンテキスト・メニューを表示し、[新しいテーブルの追加]を選択する。デザイナ上で下記のテーブル仕様に従ってテーブルを作成し、テーブル名を「AddCartTest」として保存する。

列名 Null許容 プライマリ・キー 説明
Id int
×
テスト・データのID
Count int
×
商品追加後のカートのアイテム数量
Total decimal(10,2)
×
商品追加後のカートの合計金額
ItemId nvarchar(50)
×
追加する商品の商品ID
ProductId nvarchar(50)
×
追加する商品のプロダクトID
Name nvarchar(50)
×
追加する商品の商品名
Price decimal(10,2)
×
追加する商品の商品単価
Quantity int
×
追加する商品の商品数量
AddCartTestテーブル仕様

 参考までに、AddCartTestテーブル作成のためのSQLスクリプトを以下に示す。

CREATE TABLE [dbo].[AddCartTest](
  [Id] [int] NOT NULL PRIMARY KEY CLUSTERED,
  [Count] [int] NOT NULL,
  [Total] [decimal](10, 2) NOT NULL,
  [ItemId] [nvarchar](50) NOT NULL,
  [ProductId] [nvarchar](50) NOT NULL,
  [Name] [nvarchar](50) NOT NULL,
  [Price] [decimal](10, 2) NOT NULL,
  [Quantity] [int] NOT NULL,
) ON [PRIMARY]
AddCartTest SQLスクリプト

テスト・データの作成

 VS 2005のサーバ・エクスプローラ上で「AddCartTest」テーブルを右クリックしてコンテキスト・メニューを表示し、[テーブル データの表示]を選択する。テーブルが開いたら以下の表に示すようなさまざまなテスト・データを入力する。

Id Count Total ItemId ProductId Name Price Quantity
1
1
17.00
EST-1 FI-01 Happy
17.00
1
2
1
38.00
EST-10 FI-04 Tap Dance
19.00
2
3
1
60.00
EST-11 FI-04 Ballet
20.00
3
4
1
76.00
EST-12 FI-04 Ballroom
19.00
4
5
1
85.00
EST-13 FI-05 Long Arms
17.00
5
AddCartTestテーブルに入力するテスト・データ

 以上で、データ・ドリブン単体テストを行うための準備は完了した。

 それでは、データ・ドリブン単体テストを記述していこう。


 INDEX
  VSTSの単体テスト機能は本当に使えるのか?
  第3回 VSTSで提供される注目すべき単体テスト機能
    1.VSTSの単体テスト機能
  2.データ・ドリブン単体テストの準備
    3.データ・ドリブン単体テストの記述
    4.ASPNET単体テスト
 
インデックス・ページヘ  「VSTSの単体テスト機能は本当に使えるのか?」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間