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
  }
}

拡張機能のオプションは CLI のみ

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

コマンド ライン オプションの完全なリファレンスについては、 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または同様の CLI オプションを使用します。
DataCollectionRunSettings (非難) CLI のみ --crashdump--hangdump CLI オプションを使用します。 クラッシュ ダンプとハング ダンプを参照してください。
DataCollectionRunSettings (カバレッジ) CLI のみ CLI オプション --coverage 使用します。 コード カバレッジを参照してください。
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 環境変数

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

TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY 環境変数

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

TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX 環境変数

ログ ファイル名のプレフィックス。 既定値は "log_" です。

TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE 環境変数

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

TESTINGPLATFORM_EXITCODE_IGNORE 環境変数

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

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

こちらも参照ください