使用熱重新載入測試執行

Visual Studio 中的測試執行涉及在使用 [測試平台] 執行測試之前建置專案以更新磁碟上的二進位檔。 Visual Studio 內的建置時間可能會根據對程式碼所做的變更類型而有所不同。 對於較大的解決方案,組建可能是測試執行中最昂貴的部分。 在 Visual Studio 2022 和更新版本中,可以啟用具有熱重新載入的測試執行,以藉由略過支援案例的組建來加速測試執行。

支援什麼?

  • 鎖定 .NET 6.0 和更新版本的 C# 和 VB 專案
  • 針對 DEBUG 組態建置的測試專案
  • Visual Studio 2022 和更新版本

啟用具有熱重新載入的測試執行

透過選擇 [測試>選項>「(實驗性) 為鎖定 .NET 6.0 和更新版本的 C# 和 VB 測試專案啟用熱重新載入的測試執行」] 來啟用此功能。 Screenshot of the Enable Hot Reloaded Test Runs button on the Visual Studio Test Options page. When this is selected, tests execution will use hot reload for supported scenarios

為什麼它是實驗性的?

這是一種新的測試執行方式,其中我們變更了廣泛使用的驗證程式碼路徑。 我們也預期,這項功能的相關使用者體驗會隨著我們收到更多來自使用者的意見反應而有所變更。 基於這兩個原因,我們目前已將此功能標示為「實驗性」。

運作方式

啟用該選項之後,[測試總管] 會在可能的情況下自動使用具有熱重新載入的測試執行。 如果無法進行熱重新載入,它將回復到建置和執行測試的一般行為。 作為執行測試的使用者,您不需要對工作流程進行任何變更 (也就是繼續編輯程式碼並執行測試)。

在幕後,我們使用剛發行的「用於在執行階段編輯 C#/VB 程式碼的熱重新載入體驗」中存在的相同 [編輯後繼續] 基礎結構來確定所做的變更。 基於這個理由,只有在沒有「粗魯的編輯」時我們才會進行熱重載 (在這種情況下,我們會在執行測試之前退回到建置測試)。 如需支援編輯的詳細資訊,請參閱 [編輯後繼續] 文件

測試執行的速度會快多少?

在估計此功能將為您節省多少時間時,需要考慮許多變數。 例如:

  • 專案建置需要多長時間。
  • 已進行了什麼樣的編輯。
  • 進行編輯的檔案有多大。
  • 進行編輯的位置 (無論是否為葉專案)。

最後,速度的提高將與該特定測試執行中發生的建置時間直接相關。

備註

  • 啟用該選項或開啟 Visual Studio 後的第一個測試執行將會產生專案組建。
  • 執行測試時可能不會儲存編輯器中的檔案。 若要解決這些問題,在簽入之前,請確定您使用 (Ctrl+Shift+B) 執行完整組建。
  • 當熱重新載入的測試執行發生時,磁碟上的二進位檔案不會更新。
  • 熱重新載入的測試執行不適用於 [測試總管] 中的 [測試>執行所有測試] 和 [在檢視中執行所有測試],也不適用於從 [方案總管] 中的方案節點進行 [執行所有測試]。 該功能不適用於這些命令,因為它們目前保證會建置整個方案。
  • 使用不受支援的目標架構 (低於 .NET 6.0) 執行測試時,會進行專案建置。
  • 如果您發現磁碟上的內容與 [測試總管] 顯示的內容之間有任何不一致的情況,請考慮使用 Ctrl+Shift+B 來建置解決方案/專案,然後再執行測試。 任何明確的組建都會以一般完整組建測試結果來取代熱重新載入測試結果。

已知問題

  • 具有熱重新載入的測試執行不會在下列案例中發生:
    • 程式碼涵蓋範圍
    • 即時單元測試
    • 程式碼剖析
    • 偵錯
  • 由於存在無法讀取的權杖,堆疊追蹤可能無法讀取。 此問題在這裡追蹤,並計畫在 .NET 7.0 中修正
    • 在此情況下,建議的因應措施是建置您的專案並重新執行測試。

您的意見反應很重要

如前所述,為了完成此實驗性功能,我們需要您的意見反應。 如果您對體驗有何任何建議,或遇到任何問題,請花點時間向我們報告問題。 只有透過您的意見反應,我們才能確保關鍵問題得到解決,並根據您的意見確定未來決策的優先順序。

若要與我們連絡,請使用 Visual Studio 意見反應機制