チュートリアル : スマート デバイス単体テストの作成と実行
更新 : 2007 年 11 月
このチュートリアルでは、デバイス プロジェクト用の Team System テスト ツール を使用して、一連のテストを作成、実行、およびカスタマイズする方法について説明します。開発中の C# スマート デバイス アプリケーションから始めます。次に、テスト プロジェクトを作成し、単体テストを作成し、テストを実行し、結果を確認します。
メモ : |
---|
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。 |
このチュートリアルでは、次のタスクを行います。
既存のプロジェクトを開き、メソッドを作成する。
単体テストおよびデバイス テスト プロジェクトを作成する。
実行構成を表示する。
単体テストを実行する。
コマンド プロンプトから単体テストを実行する。
前提条件
このチュートリアルを開始する前に、「チュートリアル : デバイス対応の Windows フォーム アプリケーションの作成」の手順を完了する必要があります。必要条件のチュートリアルでは、このチュートリアルを完了するのに必要な Pocket PC 2003 エミュレータに .NET Compact Framework 2.0 がインストールされます。エミュレータ ウィンドウを開いたままにしておくか、エミュレータの状態を保存します。詳細については、「保存状態ファイル」を参照してください。
既存のプロジェクトを開き、メソッドを作成する
既存のプロジェクトを開き、メソッドを作成するには
Visual Studio を起動します。
[ファイル] メニューの [開く] をポイントし、[プロジェクト/ソリューション] をクリックします。
[プロジェクトを開く] ダイアログ ボックスが表示されます。
必要条件のチュートリアルで作成した DeviceSample プロジェクトに移動し、[OK] をクリックします。
DeviceSample プロジェクトがソリューション エクスプローラに表示されます。
ソリューション エクスプローラ で Form1.cs (C#) または Form1.vb (Visual Basic) を右クリックし、[コードの表示] をクリックして、コード エディタにファイルを開きます。
Form1 クラスの中にカーソルを移動します。
次のコードを挿入します。
public int Add(int a, int b) {return a + b;}
Public Function Add(ByVal a As Integer, ByVal b As Integer) As Integer Return a + b End Function 'Add
[ビルド] メニューの [ソリューションのビルド] をクリックします。
これで、テストするソース コードを含む DeviceSample という名前のプロジェクトが用意されます。DeviceSample の名前空間 DeviceSample には、パブリック クラス Form1 が含まれます。そのメソッドを次の手順でテストします。
単体テストおよびデバイス テスト プロジェクトの作成
単体テストおよびデバイス テスト プロジェクトを作成するには
ソリューション エクスプローラ で Form1.cs (C#) または Form1.vb (Visual Basic) を右クリックし、[コードの表示] をクリックして、コード エディタにファイルを開きます。
メモ : DeviceSample プロジェクトにはテストするコードが含まれています。このコードはテスト対象コードとも呼ばれます。
Form1 クラスをスクロールして、Add メソッドを表示します。
Add メソッドを右クリックし、[単体テストの作成] をクリックします。
[単体テストの作成] ダイアログ ボックスが表示されます。
[現在の選択] ペインに、Form1 クラスを持つアセンブリのクラスとメンバの階層が、ツリー構造で表示されます。このページで、ここから任意に選択したメンバを対象に単体テストを生成し、生成された単体テストを配置するテスト プロジェクトを選択できます。
ツリー構造では、Add メソッドのみが選択されています。選択された状態のままにしてください。
[出力プロジェクト] の [新しいスマート デバイス Visual C# テスト プロジェクトを作成します] をクリックします。
メモ : テスト プロジェクトの言語は、プロジェクトの言語と一致させる必要はありません。たとえば、Visual Basic デバイス プロジェクトに対して、スマート デバイス Visual C# テスト プロジェクトを作成できます。
[設定] をクリックします。
[テスト生成の設定] ダイアログ ボックスが表示されます。[名前付け設定] グループでは、生成時にテスト ファイル、テスト クラス、およびテスト メソッドに名前を付ける方法を変更できます。[全般] グループでは、テスト生成の他の要素を変更できます。これらの設定を既定値のままにして、[OK] をクリックします。
[単体テストの作成] ダイアログ ボックスで、[OK] をクリックします。
[新しいテスト プロジェクト] ダイアログ ボックスが表示されます。
既定の名前を受け入れ、[作成] をクリックします。
これにより、単体テストを保持する TestProject1 という名前のプロジェクト、テストの一覧とテストに関する情報を含む DeviceSample.vsmdi という名前のファイル、およびテストの実行場所と実行方法に関する情報を含む SmartDeviceTestRun.testrunConfig という名前のファイルが作成されます。
そのテスト プロジェクトに、テスト クラスを含む Form1Test.cs という名前のファイルが追加されます。
メモ : すべてのテスト メソッドに、自動的に TestMethod() 属性が割り当てられます。各テストは、テストするテスト対象コード内の 1 つのメソッドに対応します。テスト メソッドは、TestClass() 属性が割り当てられているテスト クラス内に格納されます。
Form1Test.cs で、テストする変数の値を指定します。AddTest メソッドまでスクロールします。設定する変数、a、b、および expected を含む 3 行の // TODO 行が表示されます。
次の値を設定します。
int a = 4; int b = 5; int expected = 9;
これは、メソッドを値 4 と 5 で呼び出した場合、期待される戻り値は 9 であることを指定します。
この Assert ステートメントをコメント アウトします。
Assert.Inconclusive("Verify the correctness of this test method.");
この残った Assert ステートメントは、期待される結果 (9) と、Form1 クラスの Add メソッドを呼び出した実際の結果とを比較します。2 つの値が等しくない場合は、Assert によって False が返され、テストは失敗します。
Form1Tests.cs ファイルを保存します。
DeviceSample プロジェクトのテストを含むソース コード ファイルが作成されました。これで DeviceSample プロジェクトのコードの Form1Test クラスでテストを実行する準備が整いました。
実行構成の表示
実行構成を表示するには
ソリューション エクスプローラで、SmartDeviceTestRun.testrunConfig という名前のファイルをダブルクリックします。
[Hosts] をクリックします。
Host type が Smart Device に、Platform が Pocket PC 2003 に、Device が Pocket PC 2003 SE Emulator に設定されていることを確認します。
[閉じる] をクリックして終了します。
テストを実行するコンテキストを指定する実行構成の確認はこれで終わりです。
単体テストの実行
単体テストを実行およびカスタマイズするには
[テスト] メニューの [ウィンドウ] をポイントし、[テスト ビュー] をクリックします。
[テスト ビュー] ウィンドウが表示されます。
[AddTest] を右クリックし、[選択範囲の実行] をクリックします。
Visual Studio によってデバイス エミュレータにテストが配置され、テストが実行されます。[テスト結果] ウィンドウがまだ開いていない場合は、ここで開きます。
テストの実行中は、[テスト結果] ウィンドウの [結果] 列にテストのステータスが [実行中] と表示されます。テストの実行が完了すると、テストの結果が [成功] に変わります。
メモ : テストを配置するとき、対象のデバイスまたはエミュレータへの .NET Compact Framework または SQL Server Compact 3.5 の配置とインストールが、Visual Studio によって自動的に行われることはありません。テストを実行する前に、エミュレータまたはデバイスにこれらをインストールする必要があります。詳細については、「方法 : デバイスに .NET Compact Framework をインストールする」および「方法 : デバイスに SQL Server Compact 3.5 をインストールする」を参照してください。
[テスト結果] ウィンドウで、テストを表す行をダブルクリックします。
[テスト結果の詳細] ページが開きます。このページには、テストの結果に関する情報が含まれています。
生成された Form1Test テスト クラスの AddTest メソッドの実行と結果の確認はこれで終わりです。
コマンド プロンプトからの単体テストの実行
単体テストを実行およびカスタマイズするには
[スタート] ボタンをクリックし、[すべてのプログラム] をクリックします。次に [Microsoft Visual Studio 2008] をポイントし、[Visual Studio Tools] をポイントして、[Visual Studio 2008 コマンド プロンプト] をクリックします。
コマンド プロンプトで drive:\Program Files\Microsoft Visual Studio 9.0\VC フォルダが開きます。
テスト プロジェクトからビルドされたアセンブリが含まれているフォルダへ移動します。
これを行うには、まず、ソリューション フォルダへ移動します。必要条件のチュートリアルで作成した DeviceSample ソリューションでは、このフォルダは drive:\Users\username\My Documents\Visual Studio\Projects\DeviceSample になります。次に、コマンド プロンプトで次のコマンドを入力して、テスト プロジェクトのフォルダへ移動します。
cd TestProject1\bin\Debug
メモ : また、完全パスを指定することで、任意のフォルダから MSTest.exe を実行できます。
このフォルダには、単体テストの作成と実行の手順で作成したテスト プロジェクトが含まれています。テスト プロジェクトのアセンブリである TestProject1.dll には、いくつかの単体テストが含まれています。
メモ : 実行コード プロジェクトとテスト プロジェクトでは、別々のアセンブリが作成されます。必ず、実行コード プロジェクトではなくテスト プロジェクトのアセンブリに対して、コマンド ライン ユーティリティを実行してください。
コマンド ライン ユーティリティを使用してアプリケーションをテストできます。
コマンド プロンプトで次のように入力します。
MSTest /testcontainer:TestProject1.dll /runconfig:..\..\..\SmartDevicetestrun.testrunconfig
メモ : スマート デバイスの単体テストを実行するときには、/runconfig オプションを指定してください。
このコマンドによって、アセンブリ内のすべてのテストが実行され、次のような結果が返されます。
Loading testproject1.dll...
Starting execution...
Results Top Level Tests
------- ---------------
Passed TestProject1.Form1Test.AddTest
1/1 test(s) Passed
Summary
-------
Test Run Completed.
Passed 1
---------
Total 1
Results file: <path>\<test run name>.trx
Run Configuration: Default Run Configuration
メモ : mstest.exe の実行によって生成された .trx ファイルを Visual Studio で開いて、テストの結果を詳しく調べることができます。MSTest コマンドで使用できるすべてのオプションの詳細については、「MSTest.exe コマンド ライン オプション」を参照してください。
MSTest.exe コマンド ライン ユーティリティは、テストの実行をバッチ ファイルまたはその他のユーティリティで開始して自動化する場合に特に役立ちます。