共用方式為


在小組環境中測試網站和 Web 服務

更新:2007 年 11 月

當您首次測試網站時,通常是在自己電腦上進行測試。但您也可能會想要與小組夥伴一起共用這些測試,或是在更正式的環境中處理專案時,可能會需要檢查實際執行程式碼及原始檔控制的測試,之後建置實驗室會使用您的測試結果來測試程式碼。在這些情況下,單元測試必須能夠找到要測試的網站,不論該網站是否位於本機電腦上。若要使測試引擎能夠找到網站,請使用 %PathToWebRoot% 變數,如本主題下列章節所述。

伺服器選擇

如果您正在開發網站或 Web 服務,您可以使用 ASP.NET 程式開發伺服器或類似 IIS 的 Web 伺服器來執行它。這個選擇也會決定您測試網站或 Web 服務的方式,如下列章節所述:

  • 使用 ASP.NET 程式開發伺服器來測試 Web 服務

  • 使用 ASP.NET 程式開發伺服器來測試網站

相關測試:詳細資訊

您可以依照測試 Web 服務中所述,使用單元測試來測試 Web 服務的 Web 方法;或依照 ASP.NET 單元測試概觀中所述,測試網站的商務邏輯。此外,您可以依照使用 Web 測試中所述,使用 Web 測試來測試網頁。

使用 ASP.NET 程式開發伺服器來測試 Web 服務

若要在本機檔案系統上使用 ASP.NET 程式開發伺服器來測試 Web 服務,請使用 AspNetDevelopmentServer 屬性來標記單元測試方法。若要識別網站的位置,您必須在 AspNetDevelopmentServer 屬性的參數中將路徑指定為其根目錄。若要進行這項處理,請使用 %PathToWebRoot% 變數,如設定 pathToWebRoot 中所述。如需詳細資訊,請參閱測試 Web 服務

如需使用 AspNetDevelopmentServer 屬性的使用和語法詳細資訊,請參閱 AspNetDevelopmentServerAttribute測試 Web 服務

使用 ASP.NET 程式開發伺服器來測試網站

當您在電腦的檔案系統上產生 ASP.NET 單元測試來測試網站時,會以 AspNetDevelopmentServerHost 屬性來標記測試,這個屬性將需要 pathToWebApp 參數。根據預設,產生的 ASP.NET 單元測試包括了 pathToWebApp 參數中的 %PathToWebRoot% 變數,且會根據設定 pathToWebRoot 中所述的內容來設定這個變數的值。如需如何使用 ASP.NET 程式開發伺服器來測試網站的詳細資訊,請參閱 ASP.NET 單元測試概觀

如需有關 AspNetDevelopmentServerHost 屬性之使用與語法的詳細資訊,請參閱 AspNetDevelopmentServerHostAttributeASP.NET 單元測試概觀

設定 pathToWebRoot

在每一個將用來測試於「ASP.NET 程式開發伺服器」上執行的網站或 Web 服務的單元測試中,您應該在 AspNetDevelopmentServer 或 AspNetDevelopmentServerHost 屬性的 pathToWebApp 參數中指定字串 %pathtowebroot%\\<WebSiteName>。請以下列方式指定參數:

  • 逐字地使用字串 %PathToWebRoot%,即使您目前只在自己的電腦上執行測試,也要使用這個字串;如此可為您的測試提供與其他人共用以及在 Team Foundation Build 中執行的彈性。

    注意事項:

    當您在自己電腦上測試多個網站,而且這些網站未共用共同的根目錄時,您可能會想要在每一個測試中使用硬式編碼方式來編碼網站的路徑,而不是使用 %PathToWebRoot% 變數。重要事項:只能在執行本機測試時以硬式編碼方式編碼此路徑,因為這樣做可避免擴大共用此網站測試的範圍。切記在小組其他成員測試網站前,或在 Team Foundation Build.中測試前,將路徑變更為包含 %PathToWebRoot% 變數。

  • <WebSiteName> 就是要測試之網站的名稱。請輸入與 [方案總管] 中的網站名稱完全相同的字串。

如需有關使用 pathToWebApp 參數的範例,請參閱範例測試方法。

設定 %PathToWebRoot% 的值

%PathToWebRoot% 變數在不同環境中會以不同方式取得其值。有兩種情況如下所示:

  • 設定 Team Foundation Build 中的 %PathToWebRoot%

  • 設定其他共用環境中的 %PathToWebRoot%

設定 Team Foundation Build 中的 %PathToWebRoot%

在 Team Foundation Build 中使用 %PathToWebRoot% 變數時,其值是由建置型別中的資訊衍生而來的,而且會由 Team Foundation Build 自動設定。

例如,當您在為 x86 平台所建置之 'WebSite1'「發行」版本上執行測試時,PathToWeb 的值會設定為:

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

設定其他共用環境中的 %PathToWebRoot%

在所有其他案例中 (在 Team Foundation Build 中使用除外),%PathToWebRoot% 變數的值會設定如下。當執行測試時,系統會在下列一或多個位置中搜尋 %PathToWebRoot% 變數的值:

  • 新網站專案的預設位置。系統預設會使用此位置的路徑,其中 Visual Studio 會建立新的網站專案;此路徑的預設值為 <drive>:\Documents and Settings\<user name>\My Documents\Visual Studio 2005\WebSites\

  • PathToWebRoot 環境變數。如果您已經在執行測試的電腦上定義這個環境變數,則會使用它的值,並覆寫新網站專案之預設位置中的任何值。

  • Web 應用程式根目錄的值。若要設定這個值,請按一下 [工具],並按一下 [選項],再展開 [測試工具],然後按一下 [測試執行]。如果您已經設定這個值,它會覆寫 PathToWebRoot 環境變數以及新網站專案之預設位置的任何值。

範例測試方法

下列測試 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."
                    );
}

請參閱

工作

HOW TO:撰寫單元測試

HOW TO:參數化 Web 伺服器

概念

Visual Web Developer 中的 Web 伺服器

ASP.NET 單元測試概觀

參考

Microsoft.VisualStudio.TestTools.UnitTesting.Web

AspNetDevelopmentServerAttribute

AspNetDevelopmentServerHostAttribute

其他資源

測試 Web 服務

HOW TO:產生單元測試