HOW TO:在 ASP.NET 方案中執行測試時偵錯
更新:2007 年 11 月
您可以同時針對用來測試 ASP.NET Web 專案的單元測試和 Web 測試進行偵錯,也可以在執行測試時偵錯 ASP.NET 實際執行程式碼。
但是,當您正在測試 ASP.NET 程式碼時,測試程式碼並不會依照一般的方式於 VSTestHost 處理序下執行。而是會在 IIS 處理序下執行,或是在網站為檔案架構時,於 ASP.NET 程式開發伺服器處理序下執行。由於測試會在一般測試處理序以外的處理序中執行,所以在 [測試檢視] 視窗中選擇 [偵錯選取範圍] 選項或在測試清單編輯器中選擇 [偵錯核取的測試] 選項時,並不會在測試執行的同時進行偵錯。
同樣地,除非已啟用偵錯,且偵錯工具已附加到 ASP.NET 程式開發伺服器或 IIS 處理序中,否則實際執行程式碼將無法逐步執行。
在下列每一個程序中,您會透過使用 [新網站] 對話方塊來建立 ASP.NET 網站專案。在此對話方塊中,您可使用 [位置] 清單方塊來選擇網站的位置;這個選擇會決定稍後您要附加偵錯工具的處理序,以及在 ASP.NET 方案中執行測試時所要遵循的偵錯步驟。兩個選項為 [IIS] 和 [ASP.NET 程式開發伺服器]。
在 IIS 上執行時偵錯
在 ASP.NET 程式開發伺服器上執行時偵錯
在 IIS 上執行時偵錯
在下列程序中,您會將偵錯工具附加至處理序。處理序的名稱視您所使用的作業系統而定,因為作業系統決定了所安裝的 IIS 版本。下列表格說明每一個作業系統上所使用的處理序。對於第一欄中的作業系統,請使用在 [附加至處理序] 對話方塊 [可使用的處理序] 區段中第三欄內所指定的處理序名稱。
作業系統 |
主機處理序 |
ASP.NET 處理序名稱 |
Windows Server 2003 |
IIS 6.0 |
w3wp.exe |
Windows XP |
IIS 5.1 |
aspnet_wp.exe |
Windows 2000 |
IIS 5.0 |
aspnet_wp.exe |
在 IIS 上執行 ASP.NET 測試時偵錯
建立您想要測試的 ASP.NET 網站專案以及測試它的 ASP.NET 單元測試。
當您建立這個網站專案時,請在 [新網站] 對話方塊的 [位置] 中選取 [HTTP] 或 [FTP]。這可確保主機處理序為 IIS。
如需詳細資訊,請參閱 HOW TO:建立 ASP.NET 單元測試。
在 ASP.NET Web 專案中啟用偵錯。若要進行此作業,請編輯專案的 Web 組態檔。如果您的專案已經有 Web.config 檔,請至步驟 4。如果沒有,請現在加入:以滑鼠右鍵按一下您方案中的網站專案,然後按一下 [加入新項目]。
接著會顯示 [加入新項目] 對話方塊。
在 [加入新項目] 對話方塊中,選取 [Web 組態檔],然後按一下 [加入]。
如此一來,Web.config 檔即會加入到網站專案中。如需如何使用 Web.config 檔的詳細資訊,請參閱 HOW TO:啟用 ASP.NET 應用程式的偵錯。
在 Web.config 檔中,將讀為 <compilation debug="false"/> 的字行變更為 <compilation debug="true"/>。
(選擇項) 在 ASP.NET 單元測試及網站之實際執行程式碼中設定中斷點。
將偵錯工具附加至 IIS 處理序。若要進行這項處理,請按一下 [偵錯],然後按一下 [附加至處理序]。
即會顯示 [附加至處理序] 對話方塊。
在 [可使用的處理序] 中,尋找您想要附加偵錯工具的處理序名稱。
如果您需要的處理序並未顯示,您可以顯示其他執行中的處理序。若要進行這項處理,請核取 [顯示所有使用者的處理序] 和 [顯示所有工作階段中的處理序]。
在 [可使用的處理序] 之下,按一下處理序的名稱,然後再按一下 [附加]。
如果您必須附加的處理序未在執行中,請按一下 [取消],然後啟動處理序。若要進行這項處理,請在 [方案總管] 中以滑鼠右鍵按一下網站專案,然後按一下 [在瀏覽器中檢視]。下一步,按一下 [偵錯],然後再按一次 [附加至處理序];處理序應該已經開始執行,且會在 [可使用的處理序] 之下顯示。按一下處理序名稱,然後按一下 [附加]。
開始測試。
若要開始測試,請在 [測試檢視] 視窗中以滑鼠右鍵按一下您想要偵錯的測試,然後選取 [偵錯選取範圍]。
注意事項: 在執行測試時,您可以選擇 [執行選取範圍],而不選 [偵錯選取範圍]。這兩者的差異在於,如果您選擇 [偵錯選取範圍],偵錯工具會在測試完成後自動中斷連結,但是如果您選擇 [執行選取範圍],則偵錯工具會維持為附加狀態。您會發現 [執行選取範圍] 更加有用,尤其是如果您計劃在偵錯時重新執行測試數次,而且不希望每一次都要重新附加處理序。如果您選擇了 [執行選取範圍],若要在完成偵錯時中斷連結處理序,請從 [偵錯] 功能表選取 [停止偵錯] 或按 SHIFT+F5。
在 ASP.NET 程式開發伺服器上執行時偵錯
在 ASP.NET 程式開發伺服器上執行測試時偵錯
建立您想要測試的 ASP.NET 網站專案以及測試它的 ASP.NET 單元測試。
當您建立這個網站專案時,請在 [新網站] 對話方塊的 [位置] 中選取 [檔案系統]。這可確保主機處理序為「ASP.NET 程式開發伺服器」。
如需詳細資訊,請參閱 HOW TO:建立 ASP.NET 單元測試。
在 ASP.NET Web 專案中啟用偵錯。若要進行此作業,請編輯專案的 Web 組態檔。如果您的專案已經有 Web.config 檔,請至步驟 4。如果沒有,請現在加入:以滑鼠右鍵按一下您方案中的網站專案,然後按一下 [加入新項目]。
接著會顯示 [加入新項目] 對話方塊。
在 [加入新項目] 對話方塊中,選取 [Web 組態檔],然後按一下 [加入]。
如此一來,Web.config 檔即會加入到網站專案中。如需如何使用 Web.config 檔的詳細資訊,請參閱 HOW TO:啟用 ASP.NET 應用程式的偵錯。
在 Web.config 檔中,將讀為 <compilation debug="false"/> 的字行變更為 <compilation debug="true"/>。
將 System.Diagnostics.Debugger.Break() 陳述式加入至 ASP.NET 單元測試的開頭。
注意事項: 只有程式碼中的中斷點遵循此 System.Diagnostics.Debugger.Break() 陳述式時才會予以叫用。
注意事項: 在 C++ 中,此陳述式為 System::Diagnostics::Debugger::Break()。如需在 Visual C++ 中使用單元測試的詳細資訊,請參閱單元測試和 C++。
在 ASP.NET 單元測試及網站之實際執行程式碼中設定中斷點。
開始測試。
若要開始測試,請在 [測試檢視] 視窗中以滑鼠右鍵按一下您想要執行的測試,然後選取 [執行選取範圍]。
當測試開始執行時,會出現一個對話方塊。這個對話方塊指出程式碰到了中斷點。
按一下 [偵錯],選擇已載入方案之 Visual Studio 的執行個體,然後按一下 [是]。
Visual Studio 會附加至處理序,而執行作業會暫停在 System.Diagnostics.Debugger.Break() 陳述式。您可以選擇 [偵錯] 功能表的 [繼續] 或按下 F5,允許執行作業繼續至下一個中斷點。
注意事項: 當您完成偵錯時,請務必移除 System.Diagnostics.Debugger.Break() 陳述式。否則,每次您執行測試時都會出現 [中斷點] 對話方塊。