Visual Studio 中的測試回合牽涉到建置專案,以在使用 測試平臺 執行測試之前,先在磁碟上更新二進位檔。 Visual Studio 內的建置時間可能會根據對程式代碼所做的 變更種類 而有所不同。 對於較大的解決方案,組建可能是測試回合中最昂貴的部分。 在 Visual Studio 2022 和更新版本中,可以啟用具有熱重載的測試執行,藉由略過支援案例的組建來加速測試執行。
支持什麼?
- 以 .NET 6.0 和更新版本為目標的 C# 和 VB 專案
- 針對 DEBUG 組態建置的測試專案
- Visual Studio 2022 和更新版本
啟用具有熱重載功能的測試執行
選擇 [ 測試>選項>] [實驗性] 為 C# 和以 .NET 6 和更新版本為目標的 VB 測試專案啟用熱重載測試回合,以啟用此功能。
為什麼它是實驗性的?
這是測試執行的新方式,其中我們變更了驗證程式代碼的廣泛使用路徑。 我們也預期這項功能的用戶體驗會隨著我們收到更多來自使用者的意見反應而變更。 基於這兩個原因,我們目前已將此功能標示為「實驗性」。
運作方式
啟用此選項之後,[測試總管] 會盡可能自動使用具有熱重載的測試執行。 如果無法進行熱重載,則會退回到建置和執行測試的常規行為。 身為執行測試的使用者,您不需要對工作流程進行任何變更(也就是繼續編輯程式碼並執行測試)。
在幕後,我們使用新發行熱重載體驗中存在的相同 Edit and Continue 基礎結構,在運行時編輯 C#/VB 程式碼,以判斷所做的變更。 基於這個原因,我們只有在沒有「重大修改」時才會進行熱重載;若有變更,我們會在執行測試前先重新建置測試。 如需所支援編輯的詳細資訊,請參閱 編輯後繼續檔
測試執行的速度會快多少?
評估此功能將節省多少時間時,有許多變數會生效。 例如:
- 專案建置所花費的時間長度。
- 進行的是哪種編輯?
- 被編輯的檔案有多大。
- 進行編輯的位置(如果是分葉專案或不是)。
最後,速度改善將直接與該特定測試回合中發生的建置時間相關。
註釋
- 啟用 選項或開啟 Visual Studio 之後的第一個測試回合將會產生專案建置。
- 執行測試時,可能無法儲存編輯器中的檔案。 若要解決這些問題,並在簽入之前,請確定您執行完整組建 (Ctrl+Shift+B)。
- 發生熱重載測試執行時,磁碟上的二進位檔不會更新。
- 熱重載的測試執行不適用於 [測試總管] 中的 [測試>執行所有測試]、[在檢視中執行所有測試],也無法從 [方案總管] 的方案節點使用 [ 執行所有測試 ]。 此功能不適用於這些命令,因為它們目前保證會建置整個解決方案。
- 當使用低於 .NET 6.0 的不支援目標框架進行測試時,會執行專案建置。
- 如果您在磁碟上看到的內容與 [測試總管] 顯示的內容之間有任何不一致的情況,請考慮使用 Ctrl+Shift+B 的解決方案/專案建置,然後執行測試。 任何明確的組建會以一般的完整組建測試結果取代熱重載測試結果。
已知問題
- 使用熱重載的測試執行不會在下列案例中發生:
- 程式碼涵蓋範圍
- 即時單元測試
- 剖析
- 偵錯 / 除錯
- 堆疊追蹤可能因為存在無法讀取的令牌而無法讀取。
此問題正在此追蹤,並計劃於 .NET 7.0 中修正
- 在此情況下,建議的因應措施是建置您的專案並重新執行測試。
您的意見反應很重要
如先前所述,若要完成這項實驗性功能,我們需要您的意見反應。 如果您有體驗應如何或遇到任何問題的建議,請花點時間向我們回報問題。 只有透過您的意見反應,我們才能確保已解決重大問題,並根據您的輸入來排定未來決策的優先順序。
若要與我們連絡,請使用 Visual Studio 意見反應機制。