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 檔
在 [方案總管] 中,以滑鼠右鍵按一下包含 ASP.NET Web 服務的專案,然後按一下 [加入],再按一下 [新項目]。
在 [加入新項目] 對話方塊中,按一下 [已安裝的範本] 底下的 [Web]。
在 Web 範本清單中,按一下 [Web Form],然後按一下 [加入]。
下列三個新檔案隨即加入至專案:WebForm1.aspx、WebForm1.aspx.cs 和 WebForm1.aspx.designer.cs。 您不需要修改或使用這些檔案。
產生 ASP.NET Web 服務的單元測試時所發生的狀況
下圖顯示針對簡單 ASP.NET Web 服務專案產生的測試方法。 如需建立單元測試時所發生一般變更的詳細資訊,請參閱單元測試的結構。
ASP.NET 單元測試方法
所有單元測試都是以 [TestMethod ()] 屬性產生。
[Host Type ()] 屬性會指定將執行單元測試的主機介面卡。 您不需要變更這個屬性。
[AspNetDevelopmentServerHost()] 屬性會指定當 ASP.NET 程式開發伺服器是測試的主機伺服器時所要使用的設定。 只有當 ASP.NET Web 服務是在檔案系統而不是 IIS 處理序上執行時,才會包含這個屬性。 您不需要變更這個屬性。
[UrlToTest()] 屬性會指定單元測試的 ASP.NET Web 服務 URL。
其餘部分是測試方法的主體。 您可能想要初始化變數以及編輯測試方法中的判斷提示 (Assert)。
![]() |
---|
如需此處所述屬性的詳細資訊,請參閱 |
如果您執行的是 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