終端輸出

終端測試報告器是內建的狀態與進度報告系統,能向終端機(主控台)回報。 它是核心 Microsoft.測試平台(MTP)的一部分,不需要額外的 NuGet 套件。

輸出模式

MTP 支援以下輸出模式:

  • Minimal 回報失敗的結果區塊。

  • Normal 報告失敗,結果區塊跳過。 同時包含橫幅、警告訊息及賽事摘要。 輸出一個失敗測試的結果和摘要

  • Detailed 回報所有結果區塊。 輸出 1 個失敗的測試,1 個通過的測試,以及摘要

Minimal 可在 MTP 2.4 預覽版中取得。

ANSI

內部有兩種不同的輸出格式化器,自動偵測終端機處理 ANSI 跳脫碼的能力。

  • 當終端機能夠轉譯逸出序列時,會使用 ANSI 格式器。
  • 非 ANSI 格式器用於終端機無法處理逸碼時、使用 --no-ansi 或輸出被重定向時。

預設是自動偵測系統能力。

Progress

進度指示器會寫入終端機。 進度指示器顯示通過測試、失敗測試及跳過測試的數量,接著是測試組件名稱、目標框架及架構。

23 個通過的測試、0 個失敗的測試和 0 個略過的測試 進度列

進度列是根據選取的模式所撰寫:

  • ANSI,進度列會以動畫顯示,並貼在畫面底部,每 500 毫秒重新整理一次。 進度列會在測試執行完成後隱藏。
  • 非 ANSI,進度列會每隔 3 秒寫入畫面。 進度會保留在輸出中。

主控台直接輸出與進度列重繪

要動畫進度條,ANSI 進度渲染器會控制終端機游標,並反覆重繪螢幕底部。 任何直接寫入 stdoutstderr、且不經由測試框架擷取路徑的文字,都可能在這次重繪期間被覆寫或移除。 例如,來自組譯層級或工作階段層級生命週期程式碼(例如 Console.WriteLineBefore(Assembly) 掛鉤),或來自擴充套件的 Before(TestSession) 呼叫,可能只會短暫閃現,然後在進度列更新時消失。

此行為與 每次測試擷取 的標準輸出及標準誤不同。 測試執行時寫入的輸出會被框架捕捉並依照 --show-stdout--show-stderr顯示,這樣進度條就不會覆蓋它。

如果你的程式碼必須直接寫入主控台,且需要讓該輸出維持可見,請停用進度功能(在 MTP 2.3.0+ 中為 --progress off,較早版本中為 --no-progress)。 或者,關閉 ANSI(--ansi off 在 MTP 2.3.0+ 或 --no-ansi 更早版本中)以使用非 ANSI 的進度輸出,該輸出會新增行數而非原地重繪,且不會覆蓋先前的直接輸出。

選項

選項 MTP 版本 Description
--no-progress 停用在螢幕上顯示進度。 在 MTP 2.3.0 中被淘汰,改為 --progress off
--progress 2.3.0 控制是否顯示進度。 有效的值有(auto預設值)、 on (同樣接受trueenable1)、以及off(同樣接受falsedisable、)。 0
--no-ansi 停用將 ANSI 跳脫字元輸出至螢幕。
--ansi 2.3.0 控制是否輸出 ANSI 逸出字元。 有效的值有(auto預設值)、 on (同樣接受trueenable1)、以及off(同樣接受falsedisable、)。 0
--output 指定測試結果的輸出冗長度。 有效值為 MinimalNormalDetailed。 預設值為 NormalMinimal 需要 MTP 2.4 預覽版。
--show-test-results <OUTCOME> 2.4.0 依結果選擇結果區塊。 使用 passedfailedskippedallnonefailed 也包含錯誤、逾時及取消。
--show-stdout 2.2.1 決定何時顯示測試的標準輸出。 有效值為 AllFailedNone。 預設值為 All
--show-stderr 2.2.1 判斷何時顯示測試捕捉到的誤差輸出。 有效值為 AllFailedNone。 預設值為 All
--show-flaky-tests 2.4.0 控制針對重試後通過的測試之 flaky: 摘要和 不穩定測試 清單。 使用 onoff;預設為 on。 適用於 MSTest [Retry]重試延伸模組
--show-slowest-tests 2.4.0 在摘要中顯示請求的最慢測試數量。 多模組運行時,MTP 會報告每個模組最慢的測試。

skipped--show-test-resultspassed 與逗號、空格或重複的 failed 選項組合。 不要合併 allnone 和其他數值一起。 明確指定的 --show-test-results 值無論選項順序為何,都會覆寫 --output 預設值。 過濾器只會改變結果區塊;進度與摘要計數保持不變。

Note

MTP 版本欄中的破折號(—)標示核心選項,這些選項並非綁定特定版本,因為它們自平台初期發行以來就已提供。

Note

從 MTP 2.3.0 開始,當 MTP 偵測到其在 LLM 或 AI 工具環境中執行時,會隱藏啟動橫幅訊息,並將 --show-stdout--show-stderr 的預設值從 All 變更為 Failed,以減少雜訊。