本文包含針對 的故障排除指引。
出口代碼
使用已知的退出碼來通報測試失敗或應用程式錯誤。 出口代碼從 和 開始,且為非負數。
| 退出代碼 | 詳細資訊 |
|---|---|
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資料夾。