Microsoft。Testing.Platform (MTP) の構成設定

MTP では、構成ファイルと環境変数を使用してテスト プラットフォームの動作を構成できます。 この記事では、テスト プラットフォームの構成に使用できる構成設定について説明します。

testconfig.json

テスト プラットフォームでは 、[appname].testconfig.json という名前の構成ファイルを使用して、テスト プラットフォームの動作を構成します。 testconfig.json ファイルは、テスト プラットフォームの構成設定を含む JSON ファイルです。

testconfig.json ファイルの構造は次のとおりです。

{
    "platformOptions": {
        "resultDirectory": "./TestResults"
    }
}

プラットフォームは、テスト プロジェクトの出力ディレクトリ (実行可能ファイルに近い ) にある [appname].testconfig.json ファイルを自動的に検出して読み込みます。

Microsoft.Testing.Platform.MSBuild を使用する場合は、testconfig.json ファイルを作成するだけで、自動的に [appname].testconfig.json に名前が変更され、テスト プロジェクトの出力ディレクトリに移動されます。

MTP 1.5 以降では、コマンドライン引数 --config-file を使用して 、testconfig.jsonへのパスを指定できます。 このファイルは 、[appname].testconfig.json ファイルよりも優先されます。

[appname].testconfig.json ファイルは後続のビルドで上書きされます。

一元化された testconfig.json を使用する

1 つの testconfig.json を複数のテスト プロジェクト間で共有する場合は、中央の場所に配置し、 --config-file経由で渡すことができます。 MSBuild が使用可能な場合 ( dotnet testdotnet runなど)、 TestingPlatformCommandLineArguments MSBuild プロパティを使用して自動的に引数を渡すことができます。 これをリポジトリ ルートの Directory.Build.props に追加すると、すべてのテスト プロジェクトで同じ構成が使用されます。

<PropertyGroup>
  <TestingPlatformCommandLineArguments>
    $(TestingPlatformCommandLineArguments) --config-file $(MSBuildThisFileDirectory)testconfig.json
  </TestingPlatformCommandLineArguments>
</PropertyGroup>

構成の優先順位

同じ設定を複数の方法で指定できる場合、MTP は次の順序で解決します (最初の一致が優先されます)。

  1. コマンド ライン引数 (例: --results-directory)
  2. 環境変数
  3. testconfig.json 設定
  4. 組み込みの既定値

プラットフォームのオプション

testconfig.jsonplatformOptions セクションでは、テスト プラットフォームのコア動作を構成します。 次の表に、サポートされているすべてのプラットフォーム オプションを示します。

エントリー デフォルト Description
resultDirectory TestResults テスト結果が配置されるディレクトリ。 相対パス (現在の作業ディレクトリから解決) または絶対パスを指定できます。 --results-directoryコマンド ライン オプションが優先されます。
exitProcessOnUnhandledException false trueに設定すると、正常なシャットダウンを許可するのではなく、ハンドルされない例外でテスト ホスト プロセスが直ちに終了します。 TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION環境変数 (値1または0) が優先されます。

高度なシナリオ (テスト ホスト コントローラーの名前付きパイプ タイムアウトなど) には、追加の内部プラットフォーム オプションが存在します。 これらのオプションはインフラストラクチャの使用を目的としており、ここでは説明しません。

例:

{
  "platformOptions": {
    "resultDirectory": "../../TestResults",
    "exitProcessOnUnhandledException": false
  }
}

testconfig.json の環境変数

バージョン 2.3.0 以降の MTP で使用できます。

environmentVariablesセクションでは、開始前にテスト プロセスの環境変数を設定します。 各変数に文字列値を使用します。

{
  "environmentVariables": {
    "DOTNET_ENVIRONMENT": "Development",
    "FEATURE_FLAG": "true"
  }
}

testconfig.json の CLI オプション

MTP 2.3.0 より前では、 クラッシュ ダンプハング ダンプ再試行TRX レポートコード カバレッジ などの拡張機能は、 testconfig.jsonを介して構成できません。 これらの機能は、コマンド ライン引数を使用して排他的に構成されます。

MTP 2.3.0 以降では、MTP は CLI オプションを まで読み取ることができます。 このサポートには拡張機能オプションが含まれているため、コマンド ラインで実行するたびに渡したくないオプションに JSON エントリを使用できます。 コマンド ライン引数は引き続き優先されます。

構成では、拡張機能がインストールまたは登録されません。 各テスト アプリケーションは、拡張機能オプションを提供するパッケージを直接、またはテスト SDK の構成またはプロファイルを介して参照する必要があります。 それ以外の場合、testconfig.jsonまたはコマンド ラインに配置 しても、このオプションは認識されません。

アクティブなオプションには、 commandLineOptions オブジェクトを使用します。 各キーから先頭の -- を省略します。 引数 0 のオプションには true を使用し、 false を使用してオプションを無効にします。 1 つの引数には、文字列または数値を使用します。 繰り返しまたは複数の引数の場合は、配列を使用します。

{ "commandLineOptions": {
  "report-trx": true,
  "report-trx-filename": "results.trx",
  "filter-uid": ["test-1", "test-2"]
} }

MTP は、引数を含むオプションの最初の引数として文字列または数値スカラーを扱います。 ブール型の引数を渡すには、 [true][false]などの配列を使用します。 配列は、引数をブール型のプレゼンス値と区別します。

MTP は、コマンド ライン エントリなどの構成済みエントリを検証します。 不明なオプション、無効な値、および間違ったアリティを持つ値は検証に失敗します。 明示的なコマンド ライン オプションは、対応する commandLineOptions エントリをオーバーライドします。

ブートストラップのみのオプションは、MTP が構成を読み込む前に実行されます。 config-filediagnosticdiagnostic-output-directorydiagnostic-file-prefixdiagnostic-verbositydiagnostic-synchronous-write、またはenable-dynamic-extensionscommandLineOptionsに配置しないでください。

パッシブ コマンド ライン オプションの既定値

Important

commandLineOptionDefaults は MTP 2.4 プレビューで使用できます。

commandLineOptionDefaultsを使用して、有効な機能がそのオプションを要求し、優先度の高い値が存在しない場合にのみ引数を指定します。 パッシブの既定値では、オプションの有効化、拡張機能の登録、機能のアクティブ化は行われません。 各キーから先頭の -- を省略します。

{ "commandLineOptionDefaults": {
  "report-trx-filename": "{asm}.trx",
  "show-test-results": ["failed", "skipped"]
} }

MTP は、この優先順位で最初の一致を使用してオプション値を解決します。

  • 明示的なコマンド ライン値。
  • アクティブな commandLineOptions エントリ。
  • testconfig.jsonのcommandLineOptionDefaultsエントリ。
  • MSBuild で提供される既定値。

MSBuild で提供される既定値の場合は、 TestingPlatformCommandLineOptionDefault 項目を追加します。 Include値は、先頭のハイフンを省略する必要があります。

<TestingPlatformCommandLineOptionDefault Include="report-trx-filename"
                                         Value="{asm}.trx" />

コマンド ライン オプションの完全なリファレンスについては、 MTP CLI オプションリファレンスを参照してください

フレームワーク固有の設定をテストする

テスト フレームワークでは、 testconfig.json ファイルで独自の構成セクションを定義できます。 テスト フレームワークのドキュメントを参照してください。

  • MSTest: MSTest の構成 — testconfig.json
  • xUnit.net v3: xUnit.net testconfig.json
  • NUnit: 最新の Microsoft.Testing.Platform サポートについては、NUnit のドキュメントを参照してください。
  • TUnit: Microsoft.Testing.Platform の最新のサポートについては、TUnit のドキュメントを参照してください。

testconfig.json の例

次の例は、プラットフォーム オプションと MSTest 設定を構成する testconfig.json ファイルを示しています。

{
  "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 に相当するもの メモ
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 には Microsoft.Testing.Extensions.TrxReport が必要です。 MTP 2.3.0 以降では、MTP は testconfig.jsonから CLI オプションを読み取ることができます。 「テスト レポート」を参照してください。
DataCollectionRunSettings (非難) CLI オプション Microsoft.Testing.Extensions.CrashDumpから--crashdumpを使用するか、Microsoft.Testing.Extensions.HangDumpから--hangdumpを使用します。 MTP 2.3.0 以降では、MTP は testconfig.jsonから CLI オプションを読み取ることができます。 クラッシュ ダンプとハング ダンプを参照してください。
DataCollectionRunSettings (カバレッジ) CLI オプション --coverageからMicrosoft.Testing.Extensions.CodeCoverageを使用します。 MTP 2.3.0 以降では、MTP は testconfig.jsonから CLI オプションを読み取ることができます。 コード カバレッジを参照してください。
TestRunParameters --test-parameter CLI (コマンドラインインターフェース) コマンド ラインで --test-parameter key=value を使用します。

MSBuild の構成

Important

TestingPlatformEnvironmentVariable は MTP 2.4 プレビューで使用できます。

InvokeTestingPlatform起動するテスト プロセスに環境変数を設定するには、TestingPlatformEnvironmentVariable項目を追加します。

<TestingPlatformEnvironmentVariable Include="MY_OPTIONS"
                                    Value="first;second" />

Valueメタデータは、MSBuild 項目に分割するのではなく、セミコロンを保持します。 宣言された値は、MSBuild プロセスが継承する環境をオーバーレイします。 これらの項目がない場合、起動されたプロセスは環境を変更せずに継承します。

環境変数

環境変数を使用して、いくつかのランタイム構成情報を提供できます。

環境変数は、 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 環境変数

診断機能が有効な場合の冗長レベルを定義します。 使用できる値は TraceDebugInformationWarningErrorCritical です。

TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY 環境変数

診断ログの出力ディレクトリ。 指定しない場合、ファイルは既定の TestResults ディレクトリに生成されます。

TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX 環境変数

ログ ファイル名のプレフィックス。 既定では、MTP は <asm>_<tfm>_<arch> を使用し、タイムスタンプを追加します。 結果のファイル名は <asm>_<tfm>_<arch>_<timestamp>.diag。 この変数は、 --diagnostic-file-prefix コマンド ライン オプションと一致します。

この環境変数の名前は、バージョン 2.3.0 以降の MTP で使用できます。 レガシ TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX 環境変数は下位互換性のために引き続き受け入れられますが、非推奨となり、今後のメジャー バージョンで削除される可能性があります。 両方の変数を設定すると、 TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX が優先されます。

TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE 環境変数

組み込みのファイル ロガーにログの同期的な書き込みを強制します。 (プロセスがクラッシュした場合に) ログ エントリを少しも失いたくないときのシナリオに役立ちます。 これにより、テストの実行速度は低下します。 --diagnostic-synchronous-writeコマンド ライン オプションと一致します。

この環境変数の名前は、バージョン 2.3.0 以降の MTP で使用できます。 レガシ TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE 環境変数は下位互換性のために引き続き受け入れられますが、非推奨となり、今後のメジャー バージョンで削除される可能性があります。 両方の変数を設定すると、 TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE が優先されます。

TESTINGPLATFORM_EXITCODE_IGNORE 環境変数

無視する終了コードをセミコロンで区切ったリスト。 終了コードが無視されると、プロセスは代わりに 0 を返します。 たとえば、 TESTINGPLATFORM_EXITCODE_IGNORE=2;8 では、テストの失敗やテストが実行されていないシナリオは無視されます。

TESTINGPLATFORM_NOBANNER 環境変数

1またはtrueに設定すると、スタートアップ バナー、著作権メッセージ、テレメトリ バナーが非表示になります。 --no-bannerコマンド ライン オプションと同じです。 DOTNET_NOLOGO環境変数にも同じ効果があります。

NO_COLOR 環境変数

空以外の値に設定すると、すべての ANSI カラー出力が抑制されます。 MTP は、 NO_COLOR 規則に従います。

バージョン 2.3.0 以降の MTP で使用できます。

DOTNET_NOLOGO 環境変数

1またはtrueに設定すると、スタートアップ バナー、著作権メッセージ、テレメトリ バナーが非表示になります。 これは CLI 環境変数.NET標準であり、MTP によって受け入れられます。 TESTINGPLATFORM_NOBANNER も参照してください。

TESTINGPLATFORM_PIPE_DIRECTORY 環境変数

MTP 2.4.0 以降では、この変数は、MTP が名前付きパイプ通信用の Unix ドメイン ソケット ファイルを作成するディレクトリをオーバーライドします。 サンドボックスまたはコンテナーで既定の一時ディレクトリでのソケットの作成が許可されていない場合に使用します。 MTP はディレクトリを作成して確認します。ディレクトリが書き込み可能でない場合、または結果のソケット パスが長すぎるとエラーで失敗します。

この変数は、名前付きパイプがファイル システム パスを使用しないWindowsには影響しません。 また、.NET SDK など、別のプロセスによって作成されるパイプも再配置されません。

期限取り消しプロトタイプ

Warning

試験的/プロトタイプ: 期限の取り消しは、MTP 2.4 プレビューのプロトタイプです。 変数と動作は変更または削除できます。

TESTINGPLATFORM_DEADLINE を、期限の生成元から提供された完全なハードキャンセル時刻に設定します。 ISO 8601 UTC 値を使用します。 値からMTPの余白を差し引かないでください。

MTP は、期限の前にグレースフル ストップを要求します。 TESTINGPLATFORM_DEADLINE_STOP_MARGIN は、どのくらい早くするかを制御し、既定値は 60 秒です。 グレースフル ストップをサポートしていないテスト フレームワークでは、この要求は無視されます。

フォールバックとして、 TESTINGPLATFORM_DEADLINE_DUMP_MARGIN は期限前にアクティブな HangDump 拡張機能を開始します。 余白の既定値は 30 秒です。 HangDump はプロセス ツリーをキャプチャし、テスト ホストを強制終了します。 期限がないと、MTP は期限タイマーを開始しません。

デッドライン生成元は、指定された時点で強制キャンセルを行う責任を引き続き負います。

TESTINGPLATFORM_WAIT_ATTACH_DEBUGGER 環境変数

1に設定すると、テスト プロセスは起動時に一時停止し、デバッガーがアタッチされるまで待機してから続行します。 --debugコマンド ライン オプションと同じです。 ブラウザー プラットフォームではサポートされていません。

この環境変数は、バージョン 1.6.0 以降の MTP で使用できます。

TESTINGPLATFORM_LAUNCH_ATTACH_DEBUGGER 環境変数

1に設定すると、テスト プロセスは起動時にDebugger.Launch()を呼び出し、Just-In-Time デバッガーを起動してプロセスにアタッチするようにシステムに求めます。 この変数を使用して、手動でアタッチする前に発生するスタートアップ時の問題 (サーバー モード ハンドシェイクなど) をデバッグします。 Windows以外のプラットフォームでは、動作は構成されている JIT デバッガーによって異なります。

この環境変数は、バージョン 1.6.0 以降の MTP で使用できます。

診断関連の環境変数は、対応する --diagnostic-* コマンドライン引数よりも優先されます。

こちらも参照ください