チーム環境の Web サイトと Web サービスをテストする
更新 : 2007 年 11 月
初めて 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 ビルドで実行する柔軟性がもたらされます。
メモ : 使用しているコンピュータで複数の 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."
);
}
参照
処理手順
概念
Visual Web Developer における Web サーバー
参照
Microsoft.VisualStudio.TestTools.UnitTesting.Web
AspNetDevelopmentServerAttribute
AspNetDevelopmentServerHostAttribute