エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 のアプリの単体テスト

2014/06/18

このトピックでは、Windows Phone アプリの単純な単体テストの方法について説明します。

単体テストを使用して、作成したアプリの個々のメソッドと単体機能をテストすることができます。単体テストにより、開発者およびテスト担当者は、Visual C#、Visual Basic、または Visual C++ を使用して作成したアプリのメソッドに論理エラーがないかどうかを迅速に調べることができます。

このトピックでは、Visual Studio 2012 Update 2 をインストールした後、Microsoft Visual Studio Express 2012 for Windows Phone で利用できる単体テスト機能について説明します。Visual Studio Professional および Visual Studio Ultimate などの Visual Studio の上位エディションには、単体テスト用の追加機能があります。

Visual Studio の単体テストの詳細については、「単体テストを使用したコードの検証」を参照してください。

重要:重要:

Windows Phone プロジェクトの単体テストには、Visual Studio 2012 Update 2 が必要です。ここで説明する単体テストの機能およびツールは、Windows Phone SDK 8.0 には含まれていません。

このトピックは、次のセクションで構成されています。

Windows Phone アプリの単体テストを作成して実行するには、Visual Studio で以下の作業を実行する必要があります。

  1. Windows Phone プロジェクトが含まれているソリューションに単体テスト アプリ プロジェクトを追加します。

    単体テスト プロジェクトで、Windows Phone プロジェクトへの参照を追加します。

  2. 単体テスト プロジェクトで、単体テストを作成します。

  3. ツール バーで、テストの実行対象となるエミュレーターまたはターゲット デバイスを選択します。

    [テスト エクスプローラー] を開きます。[テスト エクスプローラー] から、単体テストを実行します。

テストの実行後、テストによって検出されたコードのエラーを修正し、必要に応じてテストを繰り返します。

以降のセクションでは、これらの各作業について説明します。

このセクションでは、Windows Phone アプリの単純な単体テストのチュートリアルを開始します。このチュートリアルは、以降のセクションに続きます。この例は、「チュートリアル: マネージ コードに対する単体テストの作成と実行」の例に基づいています。

サンプル Windows Phone プロジェクトを設定する

  1. 既存の Windows Phone プロジェクトに、BankAccount という名前の新しいクラスを追加します。

  2. 新しいクラス ファイルで、既定のコードを次のコードで置き換えます。

    後で、このクラスの Debit メソッド用の単体テストを作成します。

    using System;
    
    namespace Bank
    {
        public class BankAccount
        {
            public string CustomerName { get; private set; }
            public double Balance { get; private set; }
    
            private BankAccount()
            {
            }
    
            public BankAccount(string customerName, double balance)
            {
                CustomerName = customerName;
                Balance = balance;
            }
    
            public void Debit(double amount)
            {
                if (amount > Balance)
                {
                    throw new ArgumentOutOfRangeException("amount");
                }
    
                if (amount < 0)
                {
                    throw new ArgumentOutOfRangeException("amount");
                }
    
                Balance += amount;
            }
        }
    }
    
  3. Windows Phone プロジェクトをビルドして、エラーがないことを確認します。

Unit Test App (単体テスト アプリ) テンプレートを使用して、作成したアプリ プロジェクトと同じソリューション内に別のプロジェクトを作成します。

ソリューションに単体テスト プロジェクトを追加する

  1. Visual Studio の [ソリューション エクスプローラー] で、ソリューションを右クリックし、[追加]、[新しいプロジェクト] を選択します。

  2. [新しいプロジェクトの追加] ウィンドウの Windows Phone テンプレートの一覧で、[Windows Phone Unit Test App] を選択します。新しいプロジェクトに BankAccountTest という名前を付け、[OK] をクリックします。

  3. [ソリューション エクスプローラー] の新しい BankAccountTest プロジェクトで、Windows Phone プロジェクトへの参照を追加します。

    1. 新しい BankAccountTest プロジェクトで、[参照] を右クリックし、[参照の追加] を選択します。

    2. [参照マネージャー] ウィンドウで、[ソリューション] を選択します。

    3. ソリューションのプロジェクトの一覧で、Windows Phone プロジェクトの横にあるボックスを選択し、[OK] をクリックします。

単体テスト プロジェクトを追加し、参照を追加すると、ソリューションは次のようになります。

A solution that includes a unit test project

新しい単体テスト プロジェクトには、UnitTest1 という名前の既定のクラス ファイルが含まれています。このクラスには、次の既定コードがあり、TestMethod の 1 つの空のインスタンスが含まれています。

using System;
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;

namespace BankAccountTest
{
    [TestClass]
    public class BankAccountTest
    {
        [TestMethod]
        public void TestMethod1()
        {
        }
    }
}

テスト メソッドを作成する

  1. Visual Studio の単体テスト プロジェクトで、UnitTest1.cs を開きます。

  2. UnitTest1 クラス ファイルで、既定のコードを次のコードに置換します。

    このコードにより、Windows Phone プロジェクトに追加した BankAccount クラスの Debit メソッド用の単体テストが作成されます。この単体テストは、BankAccount クラスのインスタンスを作成し、指定した金額を借り入れ、新しい差引残高が予想される差引残高に等しいかどうかをテストします。

    using System;
    using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
    using Bank;
    
    namespace BankAccountTest
    {
        [TestClass]
        public class BankAccountTests
        {
            [TestMethod]
            public void Debit_WithValidAmount_UpdatesBalance()
            {
                // arrange
                double beginningBalance = 11.99;
                double debitAmount = 4.55;
                double expected = 7.44;
    
                BankAccount account = new BankAccount("New Customer", beginningBalance);
    
                // act
                account.Debit(debitAmount);
    
                //assert
                double actual = account.Balance;
                Assert.AreEqual(expected, actual, 0.001, "Account not debited corrected");
            }
        }
    }
    
  3. 単体テスト プロジェクトをビルドして、エラーがないことを確認します。

作成した単体テストを実行する場合、通常は Visual Studio のテスト エクスプローラーを使用します。

Visual Studio でテストを実行する

  1. Visual Studio のツール バーで、テストの実行対象となるエミュレーターまたはターゲット デバイスを選択します。

  2. Visual Studio で、[テスト エクスプローラー] が開いていない場合は、[テスト]、[Windows]、[テスト エクスプローラー] の順に選択します。[テスト エクスプローラー] ウィンドウには、作成した 1 つのテストが含まれていて、次のように表示されます。

    Commands available in the Test Explorer windows
  3. [テスト エクスプローラー] で、[すべて実行] をクリックします。

    Debit メソッドのコードには実際にエラーがあるので、テストはエラーと報告されます。その結果、指定した金額を借り入れた後の実際の差引残高は、予想される差引残高と一致しません。

    Test Explorer shows a unit test that failed
  4. Windows Phone プロジェクトで、Debit メソッドのコードのエラーを修正します。修正するには、Balance += amount;Balance -= amount; に変更します。

  5. Windows Phone プロジェクトをビルドして、エラーがないことを確認します。

  6. [テスト エクスプローラー] で、もう一度 [すべて実行] をクリックします。

    テストは成功と報告されます。これで、Windows Phone アプリの最初の単体テストが正常に完了しました。

    Test Explorer shows a test that passed

Visual Studio で単体テストを実行する方法

Visual Studio での単体テストは、次のいずれかの方法を使用して実行できます。また、後のセクションで説明するように、コマンド プロンプトから単体テストを実行することもできます。F5 または Ctrl + F5 キーで単体テスト プロジェクトを実行することはできません。

Visual Studio で単体テストを実行する

  • [テスト エクスプローラー] で、ツール バー上の [すべて実行] などのコマンドを使用します。

  • [テスト エクスプローラー] で 1 つ以上のテストを選択し、右クリックして、コンテキスト メニューから選択したテストを実行します。

  • [テスト] メニューで、[実行] または [デバッグ] サブメニューのオプションの 1 つを使用してテストを実行します。

  • 単体テスト クラスのコード ウィンドウで、右クリックして、[テストの実行] または [テストのデバッグ] を選択します。

コマンド プロンプトでの単体テストの実行

vstest.console アプリを使用して、コマンド プロンプトで単体テストを実行することもできます。コマンド プロンプトで単体テストを実行する場合、オプションの .runsettings ファイルを使用して既定のエミュレーター以外のターゲット デバイスを指定できます。

既定のエミュレーターのコマンド プロンプトで単体テストを実行する

  • vstest.console アプリを使用し、ご使用の XAP ファイルの名前を指定して、コマンド プロンプトから単体テスト プロジェクトを実行します。

    vstest.console アプリは通常、次のフォルダーにあります。

    C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow

    次の例と同様のコマンドを使用します。

    vstest.console D:\Projects\BankAccountTest\Bin\x86\Debug\BankAccountTest_Debug_x86.xap
    

.runsettings ファイルを使用してコマンド プロンプトで単体テストを実行する

  1. .runsettings ファイルを作成して保存します。詳細については、「.runsettings ファイルを使用した単体テストの構成」を参照してください。

  2. .runsettings ファイルで、次の例に示すように、MSPhoneTest 要素と TargetDevice 要素を追加してターゲット デバイスを指定します。

    <?xml version="1.0" encoding="utf-8"?>
    <RunSettings>
      . . .
      <MSPhoneTest>
        <TargetDevice>Emulator WVGA</TargetDevice>
      </MSPhoneTest>
    </RunSettings>
    
    
    
  3. 単体テスト プロジェクトをビルドします。

  4. vstest.console アプリを使用し、ご使用の XAP ファイルの名前と .runsettings ファイルを指定して、コマンド プロンプトから単体テスト プロジェクトを実行します。

    vstest.console アプリは通常、次のフォルダーにあります。

    C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow

    次の例と同様のコマンドを使用します。

    vstest.console D:\Projects\BankAccountTest\Bin\x86\Debug\BankAccountTest_Debug_x86.xap /Settings:D:\Projects\BankAccountTest\BankAccountTest.runsettings
    

テスト結果 (.trx) ファイルで単体テストの結果を取得する

  1. コマンド プロンプトで実行するコマンドに、/logger:trx を追加します。例:

    vstest.console D:\Projects\BankAccountTest\Bin\x86\Debug\BankAccountTest_Debug_x86.xap /logger:trx
    
  2. コマンドを実行します。現在の場所に TestResults フォルダーが作成され、そのフォルダー内にテスト結果 (.trx) ファイルが作成されます。

    重要:重要:

    このコマンドで出力フォルダーとファイルを作成するには、権限が必要です。ユーザー グループのメンバーがフォルダーを作成できない場所からコマンドを実行する場合は、管理者としてコマンド プロンプト ウィンドウを開く必要があります。たとえば、プロジェクト フォルダーからではなく、vstest.console の場所からコマンドを実行する場合は、この操作が必要になります。

    または、このトピックの前半で説明しているように、TestResults フォルダーの場所を .runsettings ファイルに指定できます。.runsettings ファイルで、次の例に示すように、RunConfiguration 要素と ResultsDirectory 要素を追加してターゲット フォルダーを指定します。

    <?xml version="1.0" encoding="utf-8"?>
    <RunSettings>
      <!-- Configurations that affect the Test Framework -->
      <RunConfiguration>
        <!-- Path relative to location of runsettings file -->
        <ResultsDirectory>.\TestResults</ResultsDirectory>
        . . .
      </RunConfiguration>
       . . .
      <MSPhoneTest>
        <TargetDevice>Emulator WVGA</TargetDevice>
      </MSPhoneTest>
    </RunSettings>
    

テスト エクスプローラーでのテストの整理と検索

[テスト エクスプローラー] で、次の機能を使用して、テストを整理したり、検索したりできます。

テスト エクスプローラーでテストを整理および検索する

  • グループ化ボタンをクリックして、クラス、期間、結果、特性、またはプロジェクトごとにテストをグループ化します。

  • 1 つ以上のテストを検索するには、検索ボックスに検索する用語を入力します。

  • テストの一覧をフィルター処理するには、検索ボックスの横にあるドロップダウン リストからテストの一覧をフィルター処理するためのフィルター条件を選択します。

次のスクリーンショットは、[テスト エクスプローラー] のこれらの機能を示しています。

Search box and filter options in Test Explorer

Windows Phone アプリと Windows ストア アプリの単体テストの相違点

次の表に、Windows Phone アプリの単体テストと Windows ストア アプリの単体テストの相違点を示します。

機能

Windows Phone アプリの単体テスト

Windows ストア アプリの単体テスト

テストの実行対象

エミュレーターまたは電話

常にローカルでテストを実行

機能の設定

次の機能はサポートされません

  • UITest メソッド

  • 非同期 Assert メソッド

Windows Phone アプリのこれらのサポート対象外の機能は、Windows ストア アプリではサポートされます。

チーム ビルド サポート

サポートされていません。

チーム ビルドの一環として単体テストの実行がサポートされます。

単体テストの詳細については、以下の記事を参照してください。

Windows Phone アプリの単体テストと同様の Windows ストア アプリの単体テストについては、以下のトピックを参照してください。

表示:
© 2015 Microsoft