共用方式為


ASP.NET Web 服務的單元測試

類別的單元測試和 ASP.NET Web 服務的單元測試之間有某些差異。 最重要的是,專案必須包含 .aspx 檔案。 本主題將會說明這個作法,也會描述建立 ASP.NET Web 服務的單元測試時,測試專案中發生的狀況。

如需如何在網站上執行效能測試的詳細資訊,請參閱建立和編輯 Web 效能測試。 如需類別單元測試的詳細資訊,請參閱 HOW TO:建立並執行單元測試

必要條件

確定您已安裝下列 IIS 元件:

IIS 6 Metabase 及 IIS 6 設定相容性

確認專案中有 .aspx 檔案

包含 ASP.NET Web 服務的專案中必須有 .aspx 檔案,才能執行單元測試。 如果沒有 .aspx 檔案,看起來雖然可以建立單元測試,但是當您嘗試執行測試時將會收到錯誤,表示 Web 要求已成功完成, 但實際上並未執行測試。

若要加入 aspx 檔

  1. 在 [方案總管] 中,以滑鼠右鍵按一下包含 ASP.NET Web 服務的專案,然後按一下 [加入],再按一下 [新項目]。

  2. 在 [加入新項目] 對話方塊中,按一下 [已安裝的範本] 底下的 [Web]。

  3. 在 Web 範本清單中,按一下 [Web Form],然後按一下 [加入]。

下列三個新檔案隨即加入至專案:WebForm1.aspx、WebForm1.aspx.cs 和 WebForm1.aspx.designer.cs。 您不需要修改或使用這些檔案。

產生 ASP.NET Web 服務的單元測試時所發生的狀況

下圖顯示針對簡單 ASP.NET Web 服務專案產生的測試方法。 如需建立單元測試時所發生一般變更的詳細資訊,請參閱單元測試的結構

ASP.NET 單元測試方法

ASP.NET 單元測試方法

  1. 所有單元測試都是以 [TestMethod ()] 屬性產生。

  2. [Host Type ()] 屬性會指定將執行單元測試的主機介面卡。 您不需要變更這個屬性。

  3. [AspNetDevelopmentServerHost()] 屬性會指定當 ASP.NET 程式開發伺服器是測試的主機伺服器時所要使用的設定。 只有當 ASP.NET Web 服務是在檔案系統而不是 IIS 處理序上執行時,才會包含這個屬性。 您不需要變更這個屬性。

  4. [UrlToTest()] 屬性會指定單元測試的 ASP.NET Web 服務 URL。

  5. 其餘部分是測試方法的主體。 您可能想要初始化變數以及編輯測試方法中的判斷提示 (Assert)。

注意事項注意事項

如需此處所述屬性的詳細資訊,請參閱

Microsoft.VisualStudio.TestTools.UnitTesting.

如果您執行的是 Windows Vista,請以系統管理員身分執行 Visual Studio

如果您執行的是 Windows Vista,則必須以系統管理員身分執行 Visual Studio,才能執行 ASP.NET 單元測試。 如果以一般使用者的身分執行 Visual Studio,雖然您可以建立網站,也可以建立及執行 ASP.NET 測試,但是測試將會失敗。 若要以系統管理員身分執行 Visual Studio,請以滑鼠右鍵按一下 [開始] 功能表上的 [Microsoft Visual Studio 2010],然後按一下 [以系統管理員身分執行]。

如果以非預設使用者身分執行 IIS,請確定您已啟用所有必要權限

建立 ASP.NET Web 服務時,必須選擇位置為 [檔案系統]、[HTTP] 還是 [FTP]。 如果選擇檔案系統,則會使用 ASP.NET 程式開發伺服器處理序。 如果選擇 HTTP 或 FTP,則會使用 IIS 處理序。

如果您的 ASP.NET Web 服務是在 IIS 處理序中執行,基於安全性目的,可以選擇以非預設使用者身分執行單元測試。 非預設使用者就是不同的處理序識別。

例如,如果 ASP.NET Web 服務必須存取電腦上的資源 (例如資料夾、檔案或資料庫),您可以選擇執行服務,讓它對這些資源的權限剛好足夠而不超過。

如果 Web 服務需要非預設使用者所沒有的權限,單元測試可能會失敗。 例如,以非預設使用者身分執行的 ASP.NET 處理序可能具有有限制的權限,但依然可能嘗試在 %WINDIR%\Temp 資料夾產生暫存檔。 如果 %WINDIR%\Temp 的預設權限不足以允許處理序存取並產生那些檔案,那麼上述動作就會失敗。 在此狀況下,為了使單元測試成功執行,您必須賦予處理序對 %WINDIR%\Temp 資料夾有較高的權限。

請參閱

參考

Microsoft.VisualStudio.TestTools.UnitTesting

概念

HOW TO:建立並執行單元測試

單元測試的結構