終端測試報告器是內建的狀態與進度報告系統,能向終端機(主控台)回報。 它是核心 Microsoft.測試平台(MTP)的一部分,不需要額外的 NuGet 套件。
輸出模式
MTP 支援以下輸出模式:
Minimal回報失敗的結果區塊。Normal報告失敗,結果區塊跳過。 同時包含橫幅、警告訊息及賽事摘要。
Detailed回報所有結果區塊。
Minimal 可在 MTP 2.4 預覽版中取得。
ANSI
內部有兩種不同的輸出格式化器,自動偵測終端機處理 ANSI 跳脫碼的能力。
- 當終端機能夠轉譯逸出序列時,會使用 ANSI 格式器。
- 非 ANSI 格式器用於終端機無法處理逸碼時、使用
--no-ansi或輸出被重定向時。
預設是自動偵測系統能力。
Progress
進度指示器會寫入終端機。 進度指示器顯示通過測試、失敗測試及跳過測試的數量,接著是測試組件名稱、目標框架及架構。
進度列
進度列是根據選取的模式所撰寫:
- ANSI,進度列會以動畫顯示,並貼在畫面底部,每 500 毫秒重新整理一次。 進度列會在測試執行完成後隱藏。
- 非 ANSI,進度列會每隔 3 秒寫入畫面。 進度會保留在輸出中。
主控台直接輸出與進度列重繪
要動畫進度條,ANSI 進度渲染器會控制終端機游標,並反覆重繪螢幕底部。 任何直接寫入 stdout 或 stderr、且不經由測試框架擷取路徑的文字,都可能在這次重繪期間被覆寫或移除。 例如,來自組譯層級或工作階段層級生命週期程式碼(例如 Console.WriteLine 或 Before(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 (同樣接受true、enable、1)、以及off(同樣接受false、disable、)。 0 |
--no-ansi |
— | 停用將 ANSI 跳脫字元輸出至螢幕。 |
--ansi |
2.3.0 | 控制是否輸出 ANSI 逸出字元。 有效的值有(auto預設值)、 on (同樣接受true、enable、1)、以及off(同樣接受false、disable、)。 0 |
--output |
— | 指定測試結果的輸出冗長度。 有效值為 Minimal、Normal和 Detailed。 預設值為 Normal。
Minimal 需要 MTP 2.4 預覽版。 |
--show-test-results <OUTCOME> |
2.4.0 | 依結果選擇結果區塊。 使用 passed、 failed、 skipped、 all或 none。
failed 也包含錯誤、逾時及取消。 |
--show-stdout |
2.2.1 | 決定何時顯示測試的標準輸出。 有效值為 All、Failed和 None。 預設值為 All。 |
--show-stderr |
2.2.1 | 判斷何時顯示測試捕捉到的誤差輸出。 有效值為 All、Failed和 None。 預設值為 All。 |
--show-flaky-tests |
2.4.0 | 控制針對重試後通過的測試之 flaky: 摘要和 不穩定測試 清單。 使用 on 或 off;預設為 on。 適用於 MSTest [Retry] 和 重試延伸模組。 |
--show-slowest-tests |
2.4.0 | 在摘要中顯示請求的最慢測試數量。 多模組運行時,MTP 會報告每個模組最慢的測試。 |
將 skipped、--show-test-results 和 passed 與逗號、空格或重複的 failed 選項組合。 不要合併 all 或 none 和其他數值一起。 明確指定的 --show-test-results 值無論選項順序為何,都會覆寫 --output 預設值。 過濾器只會改變結果區塊;進度與摘要計數保持不變。
Note
MTP 版本欄中的破折號(—)標示核心選項,這些選項並非綁定特定版本,因為它們自平台初期發行以來就已提供。
Note
從 MTP 2.3.0 開始,當 MTP 偵測到其在 LLM 或 AI 工具環境中執行時,會隱藏啟動橫幅訊息,並將 --show-stdout 和 --show-stderr 的預設值從 All 變更為 Failed,以減少雜訊。