在小組環境中測試網站和 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 屬性之使用與語法的詳細資訊,請參閱 AspNetDevelopmentServerHostAttribute 和 ASP.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."
);
}
請參閱
工作
概念
Visual Web Developer 中的 Web 伺服器
參考
Microsoft.VisualStudio.TestTools.UnitTesting.Web
AspNetDevelopmentServerAttribute
AspNetDevelopmentServerHostAttribute