MTP 支援使用設定檔與環境變數來配置測試平台的行為。 本文說明可用來設定測試平臺的組態設定。
testconfig.json
測試平臺會使用名為 [appname].testconfig.json 組態檔來設定測試平台的行為。 testconfig.json 檔案是 JSON 檔案,其中包含測試平臺的組態設定。
testconfig.json 檔案具有下列結構:
{
"platformOptions": {
"resultDirectory": "./TestResults"
}
}
平臺會自動偵測並載入位於測試項目的輸出目錄中的 [appname].testconfig.json 檔案(靠近可執行檔)。
使用 Microsoft.Testing.Platform.MSBuild時,您只要建立會自動重新命名為 [appname] .testconfig.json 的 testconfig.json 檔案,並移至測試專案的輸出目錄。
從 MTP 1.5 開始,你可以用命令列參數 --config-file 來指定 testconfig.json的路徑。 此檔案的優先順序高於 [appname].testconfig.json 檔案。
備註
[appname].testconfig.json 檔案將會在後續組建上覆寫。
使用集中管理的 testconfig.json
如果你想讓單一 testconfig.json 在多個測試專案間共享,你可以把它放在中央位置,並透過 --config-file傳遞。 當 MSBuild 可用(例如 dotnet testdotnet run或 ),你可以使用 TestingPlatformCommandLineArguments MSBuild 屬性自動傳遞參數。 將此設定加入 Directory.Build.props 於倉庫根目錄中,確保所有測試專案使用相同的設定:
<PropertyGroup>
<TestingPlatformCommandLineArguments>
$(TestingPlatformCommandLineArguments) --config-file $(MSBuildThisFileDirectory)testconfig.json
</TestingPlatformCommandLineArguments>
</PropertyGroup>
配置優先順序
當同一設定可以用多種方式指定時,MTP 會依以下順序解決(先配對者獲勝):
- 命令列參數(例如,
--results-directory) - 環境變數
- testconfig.json 設定
- 內建預設值
平台選項
platformOptions 檔案的部分負責設定測試平台的核心行為。 下表列出所有支援的平台選項:
| 入口 | 預設值 | 說明 |
|---|---|---|
resultDirectory |
TestResults |
測試結果放置的目錄。 可以是相對路徑(從目前工作目錄解析而來)或絕對路徑。
--results-directory命令列選項優先。 |
exitProcessOnUnhandledException |
false |
當設定為 true時,測試主機程序會在未處理的例外時立即退出,而非允許優雅關機。
TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION環境變數(值1或0)優先。 |
備註
還有額外的內部平台選項用於進階情境(例如測試主機控制器的命名管路逾時)。 這些選項僅用於基礎建設用途,並未涵蓋於此處。
範例:
{
"platformOptions": {
"resultDirectory": "../../TestResults",
"exitProcessOnUnhandledException": false
}
}
擴充功能選項僅限於 CLI 中使用
擴充功能(例如 崩潰傾印、停止回應傾印、重試、TRX 報告及程式碼涵蓋率)無法透過 testconfig.json 進行設定。 這些功能完全透過命令列參數來配置。
欲了解完整的命令列選項參考,請參閱 MTP CLI 選項參考。
測試框架專屬設定
測試框架可以在 testconfig.json 檔案中定義自己的設定區段。 請參考你測試框架的文件:
- MSTest: 設定 MSTest — testconfig.json
- xUnit.net v3: xUnit.net testconfig.json
- NUnit:請參閱 NUnit 文件以獲得最新Microsoft。測試。平台支援。
- TUnit:請參閱 TUnit 文件以獲得最新Microsoft。測試。平台支援。
範例 testconfig.json
以下範例展示了一個 testconfig.json 檔案,用以配置平台選項和 MSTest 設定:
{
"platformOptions": {
"resultDirectory": "./TestResults"
},
"mstest": {
"parallelism": {
"enabled": true,
"workers": 4,
"scope": "method"
},
"timeout": {
"test": 30000
},
"execution": {
"considerFixturesAsSpecialTests": true
}
}
}
從 .runsettings 遷移到 testconfig.json
如果你是從 .runsettings 檔案遷移過來,以下表格會將常見設定對應到其 testconfig.json 等效或替代方案:
| .runsettings 設定 | testconfig.json 等價物 | Notes |
|---|---|---|
RunConfiguration/ResultsDirectory |
platformOptions.resultDirectory |
|
RunConfiguration/MaxCpuCount |
沒有對等項目 | 程序層級的平行性由 dotnet test --max-parallel-test-modules MSBuild /m 選項控制。 |
MSTest/* |
mstest.* |
請參閱 配置 MSTest — testconfig.json。 |
xUnit/* |
xUnit.* |
請參見 xUnit.net testconfig.json。 |
LoggerRunSettings/Loggers |
僅限 CLI | 使用 --report-trx 或類似的 CLI 選項。 |
DataCollectionRunSettings (責怪) |
僅限使用 CLI | 使用 --crashdump 和 --hangdump CLI 選項。 請參見 崩盤與懸浮傾倒。 |
DataCollectionRunSettings (報導範圍) |
僅限命令列介面 | 使用 --coverage CLI 選項。 請參閱 法規覆蓋範圍。 |
TestRunParameters |
--test-parameter CLI(命令列介面) |
在命令列使用 --test-parameter key=value 。 |
環境變數
環境變數可用來提供一些運行時間組態資訊。
備註
環境變數優先於 testconfig.json 檔案中的組態設定。
TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION 環境變數
當 設定為 1時,測試主機程序會在未處理的例外時立即退出。 當設定為 0時,平台允許優雅關機。 此設定優先於 platformOptions:exitProcessOnUnhandledException 設定。
TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT 環境變數
覆蓋用於測試主機控制器與測試主機之間命名管線連線的預設逾時(300 秒)。 該值必須是 TimeSpan-相容的字串。
TESTINGPLATFORM_UI_LANGUAGE 環境變數
從 MTP 1.5 開始,這個環境變數設定平台顯示訊息和日誌的語言,使用如 en-us的地方值。 此語言優先於Visual Studio和 .NET SDK 語言。 支援的值與 Visual Studio 相同。 如需詳細資訊,請參閱 Visual Studio 安裝檔案中變更安裝程式語言一節,。
TESTINGPLATFORM_DIAGNOSTIC 環境變數
若設為 1,則啟用診斷記錄功能。
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY 環境變數
定義診斷啟用時的冗長程度。 可用的值為 Trace、Debug、Information、Warning、Error或 Critical。
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY 環境變數
診斷日誌的輸出目錄。 若未指定,該檔案會在預設 的 TestResults 目錄中產生。
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX 環境變數
記錄檔名稱的前置詞。 預設為 "log_"。
TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE 環境變數
強制內建檔案記錄器同步寫入記錄。 適用於如果程序崩潰時,您不想遺失任何日誌條目的情況。 這會讓測試執行變慢。
TESTINGPLATFORM_EXITCODE_IGNORE 環境變數
一個以分號分隔的出口代碼清單,可以忽略。 當退出代碼被忽略時,程序會返回 0 。 例如,忽略 TESTINGPLATFORM_EXITCODE_IGNORE=2;8 測試失敗和未執行測試的情境。
備註
與診斷相關的環境變數優先於其對應 --diagnostic-* 的命令列參數。