.runsettings ファイルを使用して単体テストを構成する

.runsettings ファイルを使って、単体テストの実行方法を構成できます。 たとえば、それを使うと、テストが実行される .NET のバージョン、テスト結果のディレクトリ、テストの実行中に収集されるデータを変更できます。 .runsettings ファイルをよく使うのは、コード カバレッジ分析をカスタマイズする場合です。

.runsettings ファイルを使うと、コマンド ラインから、IDE から、または Azure Test Plans や Azure DevOps Server (旧称 Team Foundation Server (TFS)) を使うビルド ワークフローで実行されるテストを構成できます。

.runsettings ファイルは省略可能です。 特殊な構成を行う必要がない場合、 .runsettings ファイルは不要です。

実行設定ファイルを作成してカスタマイズする

  1. 実行設定ファイルをソリューションに追加します。 ソリューション エクスプローラーでソリューションのショートカット メニューを開き、 [追加]>[新しい項目][XML ファイル] の順に選択します。 test.runsettings などの名前でファイルを保存します。

    すべての項目テンプレートが表示されない場合は、[すべてのテンプレートを表示] を選択してから、項目テンプレートを選択します。

    ヒント

    拡張子 .runsettings を使用していれば、ファイル名は自由です。

  2. *.runsettings ファイルの例」からの内容を追加し、後続の各セクションの説明に従って、ニーズに合わせてカスタマイズします。

  3. 次のいずれかの方法を利用し、必要な *.runsettings ファイルを指定します。

  4. カスタムの実行設定を使用する単体テストを実行します。

IDE でカスタム設定のオンとオフを切り替える場合、 [テスト] メニューでファイルを選択したり選択解除したりします。

ヒント

ソリューションに複数の .runsettings ファイルを作成し、必要に応じて、いずれかをアクティブなテスト設定ファイルとして選択することができます。

IDE で実行設定ファイルを指定する

使用できる方法は、Visual Studio のバージョンによって異なります。

Visual Studio 2019 バージョン 16.4 以降

Visual Studio 2019 バージョン 16.4 以降で実行設定ファイルを指定するには、次の 3 つの方法があります。

実行設定ファイルを自動検出する

注意

これは .runsettings という名前のファイルでのみ機能します。

実行設定ファイルを自動検出するには、それをソリューションのルートに配置します。

実行設定ファイルの自動検出が有効になっている場合、このファイル内の設定は実行されるすべてのテストに適用されます。 runsettings ファイルの自動検出は、次の 2 つの方法で有効にすることができます。

  • [ツール]>[オプション]>[テスト]>[runsettings ファイルの自動検出] の順に選択する

    Auto detect runsettings file option in Visual Studio

  • [テスト]>[実行設定の構成]>[runsettings ファイルの自動検出] の順に選択する

    Auto detect runsettings file menu in Visual Studio

実行設定ファイルを手動で選択する

IDE で、[テスト]>[実行設定の構成]>[ソリューション全体の runsettings ファイルの選択] の順に選択してから、.runsettings ファイルを選択します。

  • このソリューションのルートに .runsettings ファイルが存在する場合は、このファイルによりオーバーライドされます。このファイルは実行されるすべてのテストに適用されます。
  • このファイルの選択は、ローカルにのみ保持されます。

Select test solution-wide runsettings file menu in Visual Studio

ビルド プロパティを設定する

プロジェクト ファイルまたは Directory.Build.props ファイルを使用して、プロジェクトにビルド プロパティを追加します。 プロジェクトの実行設定ファイルは、RunSettingsFilePath プロパティによって指定されます。

  • 現在、プロジェクト レベルの実行設定は、C#、VB、C++、および F# プロジェクトに対してサポートされています。
  • プロジェクトに対して指定したファイルにより、ソリューションで指定された他のあらゆる実行設定ファイルがオーバーライドされます。
  • これらの MSBuild プロパティを使用し、runsettings ファイルのパスを指定できます。

プロジェクトに対して .runsettings ファイルを指定する例:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <RunSettingsFilePath>$(MSBuildProjectDirectory)\example.runsettings</RunSettingsFilePath>
  </PropertyGroup>
  ...
</Project>

Visual Studio 2019 バージョン 16.3 以前

IDE で実行設定ファイルを指定するには、 [テスト]>[設定ファイルの選択] の順に選択します。 .runsettings ファイルを参照し、選択します。

Select test settings file menu in Visual Studio 2019

ファイルは、[テスト] メニューに表示され、選択または選択解除できます。 選択されている間、実行設定ファイルは、 [コード カバレッジの分析] を選ぶたびに適用されます。

コマンド ラインから実行設定ファイルを指定する

コマンド ラインからテストを実行するには、vstest.console.exe を使い、 /Settings パラメーターを使って設定ファイルを指定します。

  1. Visual Studio 用開発者コマンド プロンプトを開きます。

  2. 次のようなコマンドを入力します。

    vstest.console.exe MyTestAssembly.dll /EnableCodeCoverage /Settings:CodeCoverage.runsettings
    

    or

    vstest.console.exe --settings:test.runsettings test.dll
    

詳細については、「VSTest.Console.exe のコマンド ライン オプション」を参照してください。

*.runsettings ファイル

*.runsettings ファイルは、RunSettings 要素内にさまざまな構成要素を含む XML ファイルです。 後続のセクションでさまざまな要素について説明します。 完全なサンプルが必要であれば、「*.runsettings ファイルの例」を参照してください。

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- configuration elements -->
</RunSettings>

既定値があるため、各構成要素は省略可能です。

RunConfiguration 要素

<RunConfiguration>
    <MaxCpuCount>1</MaxCpuCount>
    <ResultsDirectory>.\TestResults</ResultsDirectory>
    <TargetPlatform>x86</TargetPlatform>
    <TargetFrameworkVersion>net6.0</TargetFrameworkVersion>
    <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>
    <TestCaseFilter>(TestCategory != Integration) &amp; (TestCategory != UnfinishedFeature)</TestCaseFilter>
    <TestSessionTimeout>10000</TestSessionTimeout>
    <TreatNoTestsAsError>true</TreatNoTestsAsError>
</RunConfiguration>

RunConfiguration 要素には、次の要素を含めることができます。

ノード Default
MaxCpuCount 1 大文字と小文字が区別されるこのオプション名は、MaxCPUCount とスペルを間違えやすくなります

この設定では、プロセス レベルでの並列処理のレベルが制御されます。 プロセス レベルの並列処理の最大数を有効にするには、0 を使用します。

この設定により、テスト DLL の最大数、または並列で実行できるその他のテスト コンテナーが決定されます。 各 DLL は独自の testhost プロセスで実行され、他のテスト DLL のテストからプロセス レベルで分離されます。 この設定では、各テスト DLL のテストが強制的に並列実行されることはありません。 DLL 内での並列実行の制御 (スレッド レベル) は、MSTest、XUnit、NUnit などのテスト フレームワークまで行われます。

既定値は 1 であり、同時に実行される testhost は 1 つだけです。 特別な値である 0 を指定すると、論理プロセッサと同じ数の testhost を使用できます (たとえば、マルチスレッドを使用しない物理コアが 6 つのコンピューターの場合は 6、マルチスレッドを使用する物理コアが 6 つのコンピューターの場合は 12)。

実行での個別の DLL の数によって、開始される testhost の実際の数が決まります。
ResultsDirectory テスト結果が配置されるディレクトリ。 パスは .runsettings ファイルが含まれるディレクトリの相対パスになります。
TargetFrameworkVersion net40 または netcoreapp1.0 自動検出するには、このタグ全体を省略してください。

この設定では、テストの実行に使用するフレームワーク バージョンまたはフレームワーク ファミリが定義されます。

使用できる値は、net48net472net6.0net5.0netcoreapp3.1uap10.0 などの任意のフレームワーク モニカー、または .NETFramework,Version=v4.7.2.NETCoreApp,Version=v6.0.0 などの任意の有効で完全なフレームワーク名です。 下位互換性のため、Framework35Framework40Framework45FrameworkCore10FrameworkUap10 (つまり、それぞれ net35net40net45netcoreapp1.0 および uap10.0) が許可されます。 すべての値は大文字と小文字を区別します。

指定された値は、使用されるテスト ランタイム プロバイダーを決定するために使用されます。 すべてのテスト ランタイム プロバイダーは、使用するフレームワーク ファミリを考慮する必要がありますが、正確なフレームワーク バージョンを考慮することはできません。

.NET Framework 4.5.1 - 4.8 では、指定された正確なバージョンでビルドされた testhost が使用されます。 その範囲外にある値の場合は、.NET Framework 4.5.1 の testhost が使用されます。

.NET の場合は、テスト プロジェクトの <TargetFramework> (より正確には runtimeconfig.json) によって、実際のバージョンが決まります。

UWP の場合、テスト プロジェクト アプリケーションはそれ自体が testhost であり、使用する UWP の実際のバージョンを決定します。

ビルドされたバイナリからフレームワーク バージョンを自動的に決定するには、 .runsettings ファイルの TargetFrameworkVersion 要素を省略します。

自動検出を行うと、すべてのターゲット フレームワークが 1 つの共通フレームワークに統合されます。 同じターゲット フレームワーク ファミリから異なるバージョンが見つかった場合は、新しいバージョン (例: net452、net472、net48 = net48) が選択されます。

.NET Framework ランナー (Visual Studio、または開発者コマンドラインの vstest.console.exe) の場合、共通のターゲット フレームワークは net40 です。 .NET ランナー (dotnet test + DLL) の場合、共通のターゲット フレームワークは netcoreapp1.0 に設定されます。
TargetPlatform x86 自動検出するには、このタグ全体を省略してください。

この設定では、テストの実行に使用するアーキテクチャが定義されます。 指定できる値は、x86x64ARMARM64S390x です。

自動検出の場合、AnyCPU DLL のアーキテクチャはランナーによって異なる場合があります。 .NET Framework ランナー (Visual Studio、または開発者コマンドラインの vstest.console.exe) の場合、既定値は x86 です。 .NET ランナー (dotnet test) の場合、既定値は現在のプロセス アーキテクチャです。

TreatTestAdapterErrorsAsWarnings False false、true
TestAdaptersPaths TestAdapter が配置されているディレクトリの 1 つまたは複数のパス
TestCaseFilter 次の形式でのフィルター式 < プロパティ>< 演算子 >< 値 > [|&<式>]。 ブール型演算子 & は HTML エンティティ amp; で表す必要があります。 式はかっこで囲むことができます。 式構造の構文について、詳しくは「vstest/docs/filter.md」をご覧ください。
TestSessionTimeout 指定されたタイムアウトを超えたときにユーザーがテスト セッションを終了できるようにします。 タイムアウトを設定すると、リソースが適切に消費され、テスト セッションが設定された時間に制限されます。 この設定は、Visual Studio 2017 バージョン 15.5 以降で使用できます。
DotnetHostPath testhost を実行するために使用される dotnet host へのカスタム パスを指定します。 これは、dotnet/runtime リポジトリをビルドする場合など、独自の dotnet をビルドするときに便利です。 このオプションを指定すると、testhost.exe の検索がスキップされて、強制的に testhost.dll が使われます。
TreatNoTestsAsError false true または false
テストが検出されなかった場合の終了コードを定義するブール値を指定します。 値が true で、テストが検出されない場合、ゼロ以外の終了コードが返されます。 それ以外の場合、0 が返されます。

DataCollectors 要素 (診断データ アダプター)

DataCollectors 要素は、診断データ アダプターの設定を指定します。 診断データ アダプターは、テスト対象の環境とアプリケーションに関する追加情報を収集します。 各アダプターには既定の設定があるため、既定値を使用しない場合にのみ設定を指定する必要があります。

<DataCollectionRunSettings>
  <DataCollectors>
    <!-- data collectors -->
  </DataCollectors>
</DataCollectionRunSettings>

CodeCoverage データ コレクター

コード カバレッジ データ コレクターは、アプリケーション コードのどの部分がテストで実行されたかを示すログを作成します。 コード カバレッジの設定のカスタマイズの詳細については、「コード カバレッジ分析のカスタマイズ」を参照してください。

<DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
  <Configuration>
    <CodeCoverage>
      <ModulePaths>
        <Exclude>
          <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
        </Exclude>
      </ModulePaths>

      <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
      <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
      <CollectFromChildProcesses>True</CollectFromChildProcesses>
      <CollectAspDotNet>False</CollectAspDotNet>
    </CodeCoverage>
  </Configuration>
</DataCollector>

VideoRecorder データ コレクター

ビデオ データ コレクターは、テストが実行されたときに、画面記録をキャプチャします。 この記録は、UI テストのトラブルシューティングに役立ちます。 ビデオ データ コレクターは、Visual Studio 2017 バージョン 15.5 以降で使用できます。 このデータ コレクターの構成例が必要であれば、「*.runsettings ファイルの例」を参照してください。

他の種類の診断データ アダプターをカスタマイズするには、テスト設定ファイルを使用します。

Blame データ コレクター

このオプションは、テスト ホストがクラッシュする原因となる問題のあるテストを分離するのに役立ちます。 コレクターを実行すると、出力ファイル (Sequence.xml) が TestResults に作成されます。これには、クラッシュ前のテストの実行順序がキャプチャされます。

3 つの異なるモードで Blame を実行できます。

  • シーケンス ファイル モード: ハングするまでのテストの一覧を含むファイルを作成します
  • クラッシュ ダンプ モード: testhost がクラッシュしたときにダンプを作成します
  • ハング ダンプ モード: 指定されたタイムアウトより前にテストが完了しない場合にダンプを作成します

この XML 構成は、<RunSettings> ノードに直接配置する必要があります。

<RunSettings>
  <RunConfiguration>
  </RunConfiguration>
  <LoggerRunSettings>
    <Loggers>
      <Logger friendlyName="blame" enabled="True" />
    </Loggers>
  </LoggerRunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <!-- Enables blame -->
      <DataCollector friendlyName="blame" enabled="True">
        <Configuration>
          <!-- Enables crash dump, with dump type "Full" or "Mini".
          Requires ProcDump in PATH for .NET Framework. -->
          <CollectDump DumpType="Full" />
          <!-- Enables hang dump or testhost and its child processes 
          when a test hangs for more than 10 minutes. 
          Dump type "Full", "Mini" or "None" (just kill the processes). -->
          <CollectDumpOnTestSessionHang TestTimeout="10min" HangDumpType="Full" />
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

TestRunParameters

<TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="docsUrl" value="https://learn.microsoft.com" />
</TestRunParameters>

テスト実行パラメーターでは、実行時にテストで使用できる変数と値の定義方法が指定します。 MSTest TestContext.Properties プロパティ (または NUnit TestContext) を使用してパラメーターにアクセスします。

private string _appUrl;
public TestContext TestContext { get; set; }

[TestMethod] // [Test] for NUnit
public void HomePageTest()
{
    string _appUrl = TestContext.Properties["webAppUrl"];
}

テスト実行パラメーターを使用するには、パブリックの TestContext プロパティをテスト クラスに追加します。

LoggerRunSettings 要素

LoggerRunSettings セクションによって、テスト実行に使用される 1 つ以上のロガーが定義されます。 最も一般的なロガーは、コンソール、Visual Studio テスト結果ファイル (trx)、html です。

<LoggerRunSettings>
    <Loggers>
      <Logger friendlyName="console" enabled="True">
        <Configuration>
            <Verbosity>quiet</Verbosity>
        </Configuration>
      </Logger>
      <Logger friendlyName="trx" enabled="True">
        <Configuration>
          <LogFileName>foo.trx</LogFileName>
        </Configuration>
      </Logger>
      <Logger friendlyName="html" enabled="True">
        <Configuration>
          <LogFileName>foo.html</LogFileName>
        </Configuration>
      </Logger>
    </Loggers>
  </LoggerRunSettings>

MSTest 要素

これらは、 TestMethodAttribute 属性を持つテスト メソッドを実行するテスト アダプターに固有の設定です。

<MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
    <AssemblyResolution>
      <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
    </AssemblyResolution>
</MSTest>
構成 Default
ForcedLegacyMode false Visual Studio の以前のバージョンで、MSTest アダプターは、処理速度とスケーラビリティを向上するために最適化されました。 テストが実行される順序などの一部の動作は、Visual Studio の以前のエディションでの動作と完全に同じではない場合もあります。 以前のテスト アダプターを使うには、値を true に設定します。

たとえば、単体テスト用に指定された app.config ファイルがある場合は、この設定を使用することがあります。

より新しいアダプターを使用できるように、テストのリファクタリングを検討することをお勧めします。
SettingsFile ここで、MSTest アダプターで使用するテスト設定ファイルを指定できます。 また、[設定] メニューからテスト設定ファイルを指定することもできます。

この値を指定する場合は、ForcedlegacyModetrue に設定する必要があります。

<ForcedLegacyMode>true</ForcedLegacyMode>
DeploymentEnabled true 値を false に設定すると、テスト メソッドで指定した配置項目が配置ディレクトリにコピーされません。
CaptureTraceOutput true Trace.WriteLine を使用して、テスト メソッドからデバッグ トレースに書き込むことができます。
EnableBaseClassTestMethodsFromOtherAssemblies true 継承するテスト クラスとは異なるアセンブリ内の基底クラスからのテスト メソッドの検出を有効にするかどうかを示す値。
ClassCleanupLifecycle EndOfClass アセンブリの最後でクラスのクリーンアップを実行したい場合は、それを EndOfAssembly に設定します。 (EndOfClass が既定であり、ClassCleanup 動作のみであるため、MSTest v4 以降ではサポートされなくなりました)
MapNotRunnableToFailed true 実行不可能な結果を失敗したテストにマップするかどうかを示す値。
Parallelize 並列処理を設定するために使われます。

Workers: 並列処理に使うスレッド/ワーカーの数。既定では、現在のコンピューターに搭載されたプロセッサの数です。

SCOPE: 並列処理のスコープ。 MethodLevel に設定できます。 既定では、ClassLevel です。

<Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize>
TestTimeout 0 指定されたグローバル テスト ケースのタイムアウトを取得します。
TreatDiscoveryWarningsAsErrors false テスト検出の警告をエラーとして報告するには、この値を true に設定します。
TreatClassAndAssemblyCleanupWarningsAsErrors false クラスのクリーンアップの失敗をエラーとして表示するには、この値を true に設定します。
DeployTestSourceDependencies true テスト ソース参照を展開するかどうかを示す値。
DeleteDeploymentDirectoryAfterTestRunIsComplete true テストの実行後に配置ディレクトリを保持するには、この値を false に設定します。
MapInconclusiveToFailed False テストが結果不確定の状態で完了した場合は、テスト エクスプローラーでスキップ状態にマップされます。 結果不確定のテストを失敗として表示する場合は、この値を true に設定します。
AssemblyResolution False 単体テストを検索して実行する場合、追加のアセンブリへのパスを指定できます。 たとえば、テスト アセンブリと同じディレクトリにない依存関係アセンブリにこれらのパスを使用します。 パスを指定するには、Directory Path 要素を使用します。 パスには環境変数を含めることができます。

<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution>

この機能は、.NET Framework ターゲットを使っている場合にのみ適用されることに注意してください。

.runsettings ファイルの例

次の XML は、一般的な .runsettings ファイルの内容を示しています。 このコードをコピーし、自分のニーズに合わせて編集します。

ファイルの各要素には既定値があるため、省略可能です。

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Configurations that affect the Test Framework -->
  <RunConfiguration>
    <!-- Use 0 for maximum process-level parallelization. This does not force parallelization within the test DLL (on the thread-level). You can also change it from the Test menu; choose "Run tests in parallel". Unchecked = 1 (only 1), checked = 0 (max). -->
    <MaxCpuCount>1</MaxCpuCount>
    <!-- Path relative to directory that contains .runsettings file-->
    <ResultsDirectory>.\TestResults</ResultsDirectory>

    <!-- Omit the whole tag for auto-detection. -->
    <!-- [x86] or x64, ARM, ARM64, s390x  -->
    <!-- You can also change it from the Test menu; choose "Processor Architecture for AnyCPU Projects" -->
    <TargetPlatform>x86</TargetPlatform>

    <!-- Any TargetFramework moniker or omit the whole tag for auto-detection. -->
    <!-- net48, [net40], net6.0, net5.0, netcoreapp3.1, uap10.0 etc. -->
    <TargetFrameworkVersion>net40</TargetFrameworkVersion>

    <!-- Path to Test Adapters -->
    <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>

    <!-- TestCaseFilter expression -->
    <TestCaseFilter>(TestCategory != Integration) &amp; (TestCategory != UnfinishedFeature)</TestCaseFilter>

    <!-- TestSessionTimeout was introduced in Visual Studio 2017 version 15.5 -->
    <!-- Specify timeout in milliseconds. A valid value should be greater than 0 -->
    <TestSessionTimeout>10000</TestSessionTimeout>

    <!-- true or false -->
    <!-- Value that specifies the exit code when no tests are discovered -->
    <TreatNoTestsAsError>true</TreatNoTestsAsError>
  </RunConfiguration>

  <!-- Configurations for data collectors -->
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Exclude>
                <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
              </Exclude>
            </ModulePaths>

            <!-- We recommend you do not change the following values: -->
            <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
            <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
            <CollectFromChildProcesses>True</CollectFromChildProcesses>
            <CollectAspDotNet>False</CollectAspDotNet>

          </CodeCoverage>
        </Configuration>
      </DataCollector>

      <DataCollector uri="datacollector://microsoft/VideoRecorder/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder.VideoRecorderDataCollector, Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Screen and Voice Recorder">
        <!--Video data collector was introduced in Visual Studio 2017 version 15.5 -->
        <Configuration>
          <!-- Set "sendRecordedMediaForPassedTestCase" to "false" to add video attachments to failed tests only -->
          <MediaRecorder sendRecordedMediaForPassedTestCase="true"  xmlns="">           ​
            <ScreenCaptureVideo bitRate="512" frameRate="2" quality="20" />​
          </MediaRecorder>​
        </Configuration>
      </DataCollector>

      <!-- Configuration for blame data collector -->
      <DataCollector friendlyName="blame" enabled="True">
      </DataCollector>

    </DataCollectors>
  </DataCollectionRunSettings>

  <!-- Parameters used by tests at run time -->
  <TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="webAppUserName" value="Admin" />
    <Parameter name="webAppPassword" value="Password" />
  </TestRunParameters>

  <!-- Configuration for loggers -->
  <LoggerRunSettings>
    <Loggers>
      <Logger friendlyName="console" enabled="True">
        <Configuration>
            <Verbosity>quiet</Verbosity>
        </Configuration>
      </Logger>
      <Logger friendlyName="trx" enabled="True">
        <Configuration>
          <LogFileName>foo.trx</LogFileName>
        </Configuration>
      </Logger>
      <Logger friendlyName="html" enabled="True">
        <Configuration>
          <LogFileName>foo.html</LogFileName>
        </Configuration>
      </Logger>
      <Logger friendlyName="blame" enabled="True" />
    </Loggers>
  </LoggerRunSettings>

  <!-- Adapter Specific sections -->

  <!-- MSTest adapter -->
  <MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
    <AssemblyResolution>
      <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
    </AssemblyResolution>
  </MSTest>

</RunSettings>

環境変数を .runsettings ファイルに指定する

環境変数はテスト ホストとの直接の対話処理が可能な .runsettings ファイルに設定できます。 DOTNET_ROOT のような環境変数の設定を必要とする単純ではないプロジェクトをサポートするには、 .runsettings ファイルに環境変数を指定する必要があります。 これらの変数は、テスト ホスト プロセスの生成中に設定され、ホストで使用できます。

次のコードは、環境変数を渡すサンプルの .runsettings ファイルです。

<?xml version="1.0" encoding="utf-8"?>
<!-- File name extension must be .runsettings -->
<RunSettings>
  <RunConfiguration>
    <EnvironmentVariables>
      <!-- List of environment variables we want to set-->
      <DOTNET_ROOT>C:\ProgramFiles\dotnet</DOTNET_ROOT>
      <SDK_PATH>C:\Codebase\Sdk</SDK_PATH>
    </EnvironmentVariables>
  </RunConfiguration>
</RunSettings>

RunConfiguration ノードには、EnvironmentVariables ノードが含まれている必要があります。 環境変数は、要素名とその値として指定できます。

注意

これらの環境変数は、テスト ホストが開始されるときに常に設定される必要があるため、テストは常に別のプロセスで実行する必要があります。 このため、テスト ホストが常に呼び出されるよう、環境変数があるときは /InIsolation フラグが設定されます。