共用方式為


Microsoft.Testing.Platform 故障排除

本文包含針對 的故障排除指引。

出口代碼

使用已知的退出碼來通報測試失敗或應用程式錯誤。 出口代碼從 和 開始,且為非負數。

退出代碼 詳細資訊
0 退出碼 表示成功。 所有被選中執行的測試都順利完成,且沒有錯誤。
1 出口代碼表示未知錯誤,並充當萬用代碼。 如需更多錯誤資訊與細節,請參考輸出。
2 使用退出代碼 表示至少有一次測試失敗。
3 退出代碼 表示測試會話已被中止。 例如,可以使用 CtrlC 中止一個會話。
4 退出碼 表示已使用擴充功能的設定無效,測試會話無法執行。
5 退出碼 表示傳送給測試應用程式的命令列參數無效。
(已不再使用) 退出碼 不再由平台產生;先前表示測試會話使用未實作的功能。
7 退出代碼 表示測試會話無法成功完成,且很可能當機。 這可能是因為測試會話透過測試控制器的延伸點執行所致。
8 退出碼 表示測試會話沒有執行任何測試。
9 退出碼 表示已執行測試的最低執行政策被違反。
10 退出碼 表示測試介面卡(Testing.Platform Test Framework、MSTest、NUnit 或 xUnit)因與測試本身無關的基礎設施原因未能執行測試。 例如未能建立測試所需的夾具。
11 退出碼 表示測試程序將退出,當相依程序退出時。
12 退出碼 顯示測試會話無法執行,因為用戶端不支援任何支援的協定版本。
13 退出碼 表示測試會話因命令 列選項達到最大失敗次數而停止。 欲了解更多資訊,請參閱 Microsoft.Testing.Platform CLI 選項參考中的選項部分

要啟用詳細日誌並排除問題,請參見 診斷紀錄。

忽略特定的出口代碼

預設為嚴格,但允許可配置性。 因此,使用者可以決定哪些出口代碼要忽略(會回傳一個退出代碼 ,而非原本的退出代碼)。

要忽略特定的退出碼,可以使用 命令列選項或環境 變數。 被接受的有效格式是以分號分隔的退出代碼列表,以忽略(例如, )。 一個常見情境是,測試失敗不應該導致非零的退出代碼(即忽略退出代碼 )。

診斷記錄

該平台內建診斷日誌,協助你排除測試執行時的疑慮。 你可以透過命令列選項或環境變數啟用診斷日誌。

命令列選項

下列 平台選項 提供針對測試應用程式進行疑難解答的實用資訊:

  • --info
  • --diagnostic
  • --diagnostic-synchronous-write
  • --diagnostic-verbosity
  • --diagnostic-file-prefix
  • --diagnostic-output-directory

環境變數

你也可以使用環境變數啟用診斷日誌:

環境變數名稱 Description
TESTINGPLATFORM_DIAGNOSTIC 若設為 ,則啟用診斷記錄功能。
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY 定義冗長層級。 可用的值為 、、、、或 。
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY 診斷記錄的輸出目錄,如果未指定的話,檔案會產生在預設的 TestResults 目錄中。
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX 記錄檔名稱的前置詞。 預設為 。
TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE 強制內建檔案記錄器同步寫入記錄。 適用於如果程序崩潰時,您不想遺失任何日誌條目的情況。 這會讓測試執行變慢。

備註

環境變數的優先順序高於命令行自變數。

解決設定錯誤

Microsoft.Testing.Platform.MSBuild

以下是與 Microsoft.Testing.Platform.MSBuild 相關的常見設定錯誤。

錯誤 CS8892:方法 'TestingPlatformEntryPoint.Main(string[])' 不會被用作進入點,因為已經找到同步進入點 'Program.Main(string[])'。

在測試專案中手動定義進入點(),或從已經有進入點的應用程式參考測試專案,會導致與 所產生的進入點發生衝突。 若要避免此問題,請採取下列其中一個步驟:

  • 請移除您手動定義的程式進入點,通常是位於 中的 方法,並讓測試平臺自動為您產生一個。

  • 藉由設定 MSBuild 屬性來停用進入點的產生。

  • 在參考測試專案的項目中設定 MSBuild 屬性,以完全停用 的可轉移相依性。 當您從非測試專案參考測試專案時,這是必要的,例如一個參考測試應用程式的主控台應用程式。

Microsoft.Testing.Extensions.Fakes

Fakes 錯誤 無法解決來自 COR_PROFILER_PATH 和 COR_PROFILER 環境變數的分析器路徑。

如果 bin 資料夾中沒有所有 Fakes 元件,就可能發生此錯誤。

  • 請確定專案使用 MSTest.SDK,或參考 Microsoft.Testing.Extensions.Fakes。
  • 對於.NET Framework專案,請避免設定<PlatformTarget>AnyCPU</PlatformTarget>,因為這會導致NuGet無法將所有檔案複製到bin資料夾。