HOW TO:在 ASP.NET 方案中執行測試時偵錯
您可以同時針對用來測試 ASP.NET Web 專案的單元測試和 Web 測試進行偵錯, 也可以在執行測試時偵錯 ASP.NET 實際執行程式碼。
但是,當您正在測試 ASP.NET 程式碼時,測試程式碼並不會依照一般的方式於 VSTestHost 處理序下執行。 而是會在 IIS 處理序下執行,或是在網站為檔案架構時,於 ASP.NET 程式開發伺服器處理序下執行。 因為測試執行不同於一般測試處理序,在測試功能表選取 [偵錯單元測試] 選項,不會在測試執行時偵錯。
同樣地,除非已啟用偵錯,且偵錯工具已附加到 ASP.NET 程式開發伺服器或 IIS 處理序中,否則 ASP.NET 實際執行程式碼將無法逐步執行。
在下列每一個程序中,您會透過使用 [新網站] 對話方塊來建立 ASP.NET 網站專案。 在此對話方塊中,您可使用 [位置] 清單方塊來選擇網站的位置; 這個選擇會決定稍後您要附加偵錯工具的處理序,以及在 ASP.NET 方案中執行測試時所要遵循的偵錯步驟。 兩個選項為 [IIS] 和 [ASP.NET 程式開發伺服器]。
在 IIS 上執行時偵錯
在 ASP.NET 程式開發伺服器上執行時偵錯
在 IIS 上執行時偵錯
在下列程序中,您會將偵錯工具附加至處理序。 處理序的名稱視您所使用的作業系統而定,因為作業系統決定了所安裝的 IIS 版本。
在 IIS 上執行 ASP.NET 測試時偵錯
建立您想要測試的 ASP.NET 網站專案以及測試它的 ASP.NET 單元測試。
當您建立這個網站專案時,請在 [新網站] 對話方塊的 [位置] 中選取 [HTTP] 或 [FTP]。 這可確保主機處理序為 IIS。
在 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 程式開發伺服器」。
在 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++ 中使用單元測試的詳細資訊,請參閱Unit Tests and C++。
在 ASP.NET 單元測試及網站之實際執行程式碼中設定中斷點。
開始測試。
若要這麼做,請在[偵錯單元測試總管]選取您想要的測試,然後從 [測試] 功能表,然後選取 [偵錯單元測試],[選取的測試]。
當測試開始執行時,會出現一個對話方塊。 這個對話方塊指出程式碰到了中斷點。
選取 [偵錯],選擇已載入方案之 Visual Studio 的執行個體,然後再選擇 [是]。
Visual Studio 會附加至處理序,而執行作業會暫停在 System.Diagnostics.Debugger.Break() 陳述式。 您可以選擇 [偵錯] 功能表的 [繼續] 或按下 F5,允許執行作業繼續至下一個中斷點。
注意事項 當您完成偵錯時,請務必移除 System.Diagnostics.Debugger.Break() 陳述式。否則,每次您執行測試時都會出現 [中斷點] 對話方塊。