共用方式為


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 測試時偵錯

  1. 建立您想要測試的 ASP.NET 網站專案以及測試它的 ASP.NET 單元測試。

    當您建立這個網站專案時,請在 [新網站] 對話方塊的 [位置] 中選取 [HTTP] 或 [FTP]。這可確保主機處理序為 IIS。

    如需詳細資訊,請參閱 HOW TO:建立 ASP.NET 單元測試

  2. 在 ASP.NET Web 專案中啟用偵錯。若要進行此作業,請編輯專案的 Web 組態檔。如果您的專案已經有 Web.config 檔,請至步驟 4。如果沒有,請現在加入:以滑鼠右鍵按一下您方案中的網站專案,然後按一下 [加入新項目]。

    接著會顯示 [加入新項目] 對話方塊。

  3. 在 [加入新項目] 對話方塊中,選取 [Web 組態檔],然後按一下 [加入]。

    如此一來,Web.config 檔即會加入到網站專案中。如需如何使用 Web.config 檔的詳細資訊,請參閱 HOW TO:啟用 ASP.NET 應用程式的偵錯

  4. 在 Web.config 檔中,將讀為 <compilation debug="false"/> 的字行變更為 <compilation debug="true"/>。

  5. (選擇項) 在 ASP.NET 單元測試及網站之實際執行程式碼中設定中斷點。

  6. 將偵錯工具附加至 IIS 處理序。若要進行這項處理,請按一下 [偵錯],然後按一下 [附加至處理序]。

    即會顯示 [附加至處理序] 對話方塊。

  7. 在 [可使用的處理序] 中,尋找您想要附加偵錯工具的處理序名稱。

    如果您需要的處理序並未顯示,您可以顯示其他執行中的處理序。若要進行這項處理,請核取 [顯示所有使用者的處理序] 和 [顯示所有工作階段中的處理序]。

  8. 在 [可使用的處理序] 之下,按一下處理序的名稱,然後再按一下 [附加]。

    如果您必須附加的處理序未在執行中,請按一下 [取消],然後啟動處理序。若要進行這項處理,請在 [方案總管] 中以滑鼠右鍵按一下網站專案,然後按一下 [在瀏覽器中檢視]。下一步,按一下 [偵錯],然後再按一次 [附加至處理序];處理序應該已經開始執行,且會在 [可使用的處理序] 之下顯示。按一下處理序名稱,然後按一下 [附加]。

  9. 開始測試。

    若要開始測試,請在 [測試檢視] 視窗中以滑鼠右鍵按一下您想要偵錯的測試,然後選取 [偵錯選取範圍]。

    注意事項:

    在執行測試時,您可以選擇 [執行選取範圍],而不選 [偵錯選取範圍]。這兩者的差異在於,如果您選擇 [偵錯選取範圍],偵錯工具會在測試完成後自動中斷連結,但是如果您選擇 [執行選取範圍],則偵錯工具會維持為附加狀態。您會發現 [執行選取範圍] 更加有用,尤其是如果您計劃在偵錯時重新執行測試數次,而且不希望每一次都要重新附加處理序。如果您選擇了 [執行選取範圍],若要在完成偵錯時中斷連結處理序,請從 [偵錯] 功能表選取 [停止偵錯] 或按 SHIFT+F5。

在 ASP.NET 程式開發伺服器上執行時偵錯

在 ASP.NET 程式開發伺服器上執行測試時偵錯

  1. 建立您想要測試的 ASP.NET 網站專案以及測試它的 ASP.NET 單元測試。

    當您建立這個網站專案時,請在 [新網站] 對話方塊的 [位置] 中選取 [檔案系統]。這可確保主機處理序為「ASP.NET 程式開發伺服器」。

    如需詳細資訊,請參閱 HOW TO:建立 ASP.NET 單元測試

  2. 在 ASP.NET Web 專案中啟用偵錯。若要進行此作業,請編輯專案的 Web 組態檔。如果您的專案已經有 Web.config 檔,請至步驟 4。如果沒有,請現在加入:以滑鼠右鍵按一下您方案中的網站專案,然後按一下 [加入新項目]。

    接著會顯示 [加入新項目] 對話方塊。

  3. 在 [加入新項目] 對話方塊中,選取 [Web 組態檔],然後按一下 [加入]。

    如此一來,Web.config 檔即會加入到網站專案中。如需如何使用 Web.config 檔的詳細資訊,請參閱 HOW TO:啟用 ASP.NET 應用程式的偵錯

  4. 在 Web.config 檔中,將讀為 <compilation debug="false"/> 的字行變更為 <compilation debug="true"/>。

  5. 將 System.Diagnostics.Debugger.Break() 陳述式加入至 ASP.NET 單元測試的開頭。

    注意事項:

    只有程式碼中的中斷點遵循此 System.Diagnostics.Debugger.Break() 陳述式時才會予以叫用。

    注意事項:

    在 C++ 中,此陳述式為 System::Diagnostics::Debugger::Break()。如需在 Visual C++ 中使用單元測試的詳細資訊,請參閱單元測試和 C++

  6. 在 ASP.NET 單元測試及網站之實際執行程式碼中設定中斷點。

  7. 開始測試。

    若要開始測試,請在 [測試檢視] 視窗中以滑鼠右鍵按一下您想要執行的測試,然後選取 [執行選取範圍]。

  8. 當測試開始執行時,會出現一個對話方塊。這個對話方塊指出程式碰到了中斷點。

  9. 按一下 [偵錯],選擇已載入方案之 Visual Studio 的執行個體,然後按一下 [是]。

    Visual Studio 會附加至處理序,而執行作業會暫停在 System.Diagnostics.Debugger.Break() 陳述式。您可以選擇 [偵錯] 功能表的 [繼續] 或按下 F5,允許執行作業繼續至下一個中斷點。

    注意事項:

    當您完成偵錯時,請務必移除 System.Diagnostics.Debugger.Break() 陳述式。否則,每次您執行測試時都會出現 [中斷點] 對話方塊。

請參閱

工作

HOW TO:在執行測試時偵錯

HOW TO:建立 ASP.NET 單元測試

概念

ASP.NET 單元測試概觀

其他資源

HOW TO:啟用 ASP.NET 應用程式的偵錯