Share via


チーム環境の Web サイトと Web サービスをテストする

初めて Web サイトをテストする場合、通常は自分のコンピュータでテストします。しかし、テストをチームのメンバーと共有することもあります。また、作業中のプロジェクトで、実行コードおよびテストをソース管理にチェックインし、その後でビルド ラボでテストを使用してコードをテストすることもあります。どのシナリオでも、単体テストでは、テストしている Web サイトがローカル コンピュータ上なのかどうかを特定できる必要があります。テスト エンジンで Web サイトを特定できるようにするには、%PathToWebRoot% 変数を、このトピックの以下のセクションでの説明に従って使用します。

サーバーの選択

Web サイトまたは Web サービスを開発している場合、ASP.NET 開発サーバーまたは IIS のような Web サーバーを使用して実行できます。この選択は、Web サイトまたは Web サービスのテスト方法も規定します。詳細については以下のセクションを参照してください。

  • ASP.NET 開発サーバーでの Web サービス テスト

  • ASP.NET 開発サーバーでの Web サイト テスト

関連テスト : 詳細情報

単体テストを使用すると、「Web サービスのテスト」で説明されている手順に従って、Web サービスの Web メソッドをテストしたり、「ASP.NET 単体テストの概要」で説明されている手順に従って、Web サイトのビジネス ロジックをテストしたりできます。また、Web テストを使用すると、「Web テストの操作」で説明されている手順に従って、Web ページをテストできます。

ASP.NET 開発サーバーでの Web サービス テスト

ローカルのファイル システムで ASP.NET 開発サーバーを使用して Web サービスをテストするには、単体テスト メソッドに AspNetDevelopmentServer 属性でマークを付けます。Web サイトの位置を特定するには、AspNetDevelopmentServer 属性のパラメータに、サイトのルート ディレクトリを指定します。この場合、「pathToWebRoot の設定」の説明を参考に、%PathToWebRoot% 変数を使用します。詳細については、「Web サービスのテスト」を参照してください。

AspNetDevelopmentServer 属性の使用法および構文の詳細については、「AspNetDevelopmentServerAttribute」および「Web サービスのテスト」を参照してください。

ASP.NET 開発サーバーでの Web サイト テスト

使用しているコンピュータのファイル システムで ASP.NET 単体テストを生成し、Web サイトをテストする場合、テストに AspNetDevelopmentServerHost 属性でマークを付けます。このパラメータを指定すると、pathToWebApp 属性がオーバーライドされます。既定で、生成された ASP.NET 単体テストの pathToWebApp パラメータには %PathToWebRoot% 変数が含まれます。この変数値については、「pathToWebRoot の設定」を参照してください。ASP.NET 開発サーバーを使用した Web サイトのテストの詳細については、「ASP.NET 単体テストの概要」を参照してください。

AspNetDevelopmentServerHost 属性の使用法および構文の詳細については、「AspNetDevelopmentServerHostAttribute」および「ASP.NET 単体テストの概要」を参照してください。

pathToWebRoot の設定

ASP.NET 開発サーバーで実行中の Web サイトまたは Web サービスのテストで単体テストを使用する場合は、AspNetDevelopmentServer 属性または AspNetDevelopmentServerHost 属性の pathToWebApp パラメータに文字列 %pathtowebroot%\\<WebSiteName> を指定します。パラメータは、次のように指定します。

  • %PathToWebRoot% 逐語的文字列を使用します。使用しているコンピュータでのみテストを実行している場合でも、この文字列は使用します。こうすることで、他のユーザーとテストを共有し、Team Foundation ビルドで実行する柔軟性がもたらされます。

    Noteメモ :

    使用しているコンピュータで複数の Web サイトをテストしていて、各 Web サイトはルート ディレクトリを共有していない場合、%PathToWebRoot% 変数を使用しないで、各テストで Web サイトへのパスをハードコーディングすることもできます。重要 : このパスをハードコーディングするのはローカルにテストしている場合だけにしてください。ハードコーディングすると、この Web サイトのテストを広く共有することができなくなります。Web サイトをチームの他のメンバーがテストする前、または Team Foundation ビルドでテストする前に、パスを変更して %PathToWebRoot% 変数を含めてください。

  • <WebSiteName> は、テストする Web サイトの名前です。この文字列は、ソリューション エクスプローラに表示される Web サイトの名前のとおりに正確に入力します。

pathToWebApp パラメータの使用例については、「テスト メソッドの例」を参照してください。

%PathToWebRoot% の値の設定

%PathToWebRoot% 変数が値を取得する方法は、環境によって異なります。次の 2 つの場合があります。

  • Team Foundation ビルドでの %PathToWebRoot% の設定

  • その他の共有環境での %PathToWebRoot% の設定

Team Foundation ビルドでの %PathToWebRoot% の設定

Team Foundation ビルドで使用される場合、%PathToWebRoot% 変数の値はビルドの種類から導出され、Team Foundation ビルドによって自動的に設定されます。

たとえば、x86 プラットフォーム用にビルドされた 'WebSite1' の 'Release' バージョンでは、PathToWeb の値は次のように設定されます。

<build directory>/binaries/x86/Release/_precompiled/WebSite1

その他の共有環境での %PathToWebRoot% の設定

Team Foundation ビルドで使用される場合以外のすべてのケースでは、%PathToWebRoot% 変数の値は次のように設定されます。テストを実行すると、次に示す 1 つ以上の位置で %PathToWebRoot% 変数の値が検索されます。

  • 新しい Web サイト プロジェクトの既定のディレクトリ。既定では、Visual Studio で新しい Web サイト プロジェクトを作成するディレクトリへのパスが使用されます。この既定値は <drive>:\Documents and Settings\<user name>\My Documents\Visual Studio 2005\WebSites\ です。

  • PathToWebRoot 環境変数。テストを実行するコンピュータで環境変数を定義した場合、その環境変数値が使用され、新しい Web サイト プロジェクトの既定ディレクトリをオーバーライドします。

  • Web アプリケーションのルート ディレクトリ値。この値を設定するには、[ツール] をクリックし、[オプション] をクリックします。次に [テスト ツール] を展開し、[テストの実行] をクリックします。この値を設定すると、PathToWebRoot 環境変数の値と新しい Web サイト プロジェクトの既定のディレクトリをオーバーライドします。

テスト メソッドの例

Web サービスをテストする次のテスト メソッドは、AspNetDevelopmentServer 属性でマークが付けられます。AspNetDevelopmentServer 属性には pathToWebApp パラメータが必要です。次の例で、%PathToWebRoot% 変数が pathToWebApp パラメータで使用されている箇所は太字で示されています。

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Web;
using TestProject1.localhost;

[TestMethod]
[AspNetDevelopmentServer("HelloWorldServer", "%PathToWebRoot%\\WebSite1")]

public void HelloWorldTest()
{
    HelloWorldService target = new HelloWorldService();

    WebServiceHelper.TryUrlRedirection(
                                       target, 
                                       TestContext,
                                       "HelloWorldServer"
                                       );

    string expected = "Hello World";
    string actual;

    actual = target.HelloWorld();

    Assert.AreEqual(
                    expected, 
                    actual,

"TestProject1.localhost.HelloWorldService.HelloWorld did not return the expected value."
                    );
}

参照

処理手順

方法 : 単体テストを編集する
方法 : 単体テストを生成する
方法 : Web サーバーをパラメータ化する

関連項目

Microsoft.VisualStudio.TestTools.UnitTesting.Web
AspNetDevelopmentServerAttribute
AspNetDevelopmentServerHostAttribute

概念

Web サービスのテスト
Visual Web Developer における Web サーバー
ASP.NET 単体テストの概要