次の方法で共有


.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 ファイルを作成し、必要に応じてアクティブなテスト設定ファイルとして 1 つ選択できます。

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

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

Visual Studio 2019 バージョン 16.4 以降

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

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

手記

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

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

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

  • [ツール]>[オプション]>[テスト]>[ランセット ファイルの自動検出] を選択

    Visual Studio の実行設定ファイル自動検出オプション

  • [テスト]>[実行設定の構成]>[runsettings ファイルの自動検出] を選びます

    Visual Studio での

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

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

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

Visual Studio でテスト ソリューション全体の runsettings ファイル メニューを選択する

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

プロジェクト ファイルまたは 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 ファイルを参照して選びます。

Visual Studio 2019 の [テスト設定ファイルの選択] メニュー

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

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

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

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

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

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

    または

    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 要素には、次の要素を含めることができます。

ノード 既定値 価値観
MaxCpuCount 1 オプション名は大文字と小文字が区別され、MaxCPUCountとしてスペルミスが簡単です。

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

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

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

実行中の個別の DLL の数によって、開始されたテストホストの実際の数が決まります。
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 の場合、テスト プロジェクト アプリケーションはそれ自体がテストホストであり、使用される 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 テスト) の場合、既定は現在のプロセス アーキテクチャです。

TreatTestAdapterErrorsAsWarnings false false、true
TestAdaptersPaths TestAdapters が配置されているディレクトリへの 1 つ以上のパス
TestCaseFilter プロパティ演算子[|&&] 形式のフィルター式。 ブール演算子 & は、HTML エンティティ & で表す必要があります。. 式はかっこで囲むことができます。 式構造の詳細な構文については、vstest/docs/filter.md 参照してください。
TestSessionTimeout 特定のタイムアウト (ミリ秒単位で指定) を超えたときに、ユーザーがテスト セッションを終了できるようにします。 タイムアウトを設定すると、リソースが十分に消費され、テスト セッションが設定された時間に制限されます。 この設定は、Visual Studio 2017 バージョン 15.5 以降で使用できます。
DotnetHostPath testhost の実行に使用する dotnet ホストへのカスタム パスを指定します。 これは、独自の dotnet を構築する場合 (たとえば、dotnet/runtime リポジトリを構築する場合) に便利です。 このオプションを指定すると、testhost.exeの検索がスキップされ、testhost.dllが強制的に使用されます。
TreatNoTestsAsError false true または false
テストが検出されない場合の終了コードを定義するブール値を指定します。 値が true で、テストが検出されない場合は、0 以外の終了コードが返されます。 それ以外の場合は、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 ファイルのを参照してください。

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

データ コレクターを非難する

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

次の 3 つの異なるモードで、非難を実行できます。

  • シーケンス ファイル モード: ハングするまでのテストの一覧を含むファイルを作成します
  • クラッシュ ダンプ モード: 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>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="docsUrl" value="https://learn.microsoft.com" />
</TestRunParameters>

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

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>
    <ConsiderFixturesAsSpecialTests>False</ConsiderFixturesAsSpecialTests>
    <AssemblyResolution>
      <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
    </AssemblyResolution>
</MSTest>
設定 既定値 価値観
ForcedLegacyMode false 以前のバージョンの Visual Studio では、MSTest アダプターが最適化され、より高速でスケーラブルになりました。 テストの実行順序などの一部の動作は、Visual Studio の以前のエディションとまったく同じではない場合があります。 古いテスト アダプターを使用するには、値 true に設定します。

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

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

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

<ForcedLegacyMode>true</ForcedLegacyMode>
DeploymentEnabled 本当 値を false 設定した場合、テスト メソッドで指定した展開項目は展開ディレクトリにコピーされません。
CaptureTraceOutput 本当 現在実行中のテストに関連付けられる Console.Write*Trace.Write*Debug.Write* API から送信されるテキスト メッセージをキャプチャします。
EnableBaseClassTestMethodsFromOtherAssemblies true 継承するテスト クラスとは異なるアセンブリ内の基底クラスからのテスト メソッドの検出を有効にするかどうかを示す値。
ClassCleanupLifecycle EndOfClass アセンブリの最後にクラスのクリーンアップを実行する場合は、EndOfAssembly に設定します。 (EndOfClass が既定であり、ClassCleanup 動作 のみであるため、MSTest v4 以降ではサポートされなくなりました)
MapNotRunnableToFailed 本当 実行できない結果が失敗したテストにマップされるかどうかを示す値。
Parallelize 並列処理の設定に使用します。

ワーカー: 並列化に使用するスレッド/ワーカーの数。既定では、現在のマシン 上のプロセッサの数

SCOPE: 並列化のスコープ。 これを MethodLevel に設定できます。 既定では、ClassLevelです。

<Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize>
TestTimeout 0 指定されたグローバル テスト ケースのタイムアウトを取得します。
発見された警告をエラーとして扱う false テスト検出の警告をエラーとして報告するには、この値を true 設定します。
TreatClassAndAssemblyCleanupWarningsAsErrors 間違い クラスクリーンアップのエラーをエラーとして表示するには、この値を true 設定します。
DeployTestSourceDependencies true テスト ソース参照をデプロイするかどうかを示す値。
テスト実行が完了した後にデプロイメントディレクトリを削除 true テストの実行後にデプロイ ディレクトリを保持するには、この値を false 設定します。
MapInconclusiveToFailed false テストが結果不確定の状態で完了した場合は、テスト エクスプローラーでスキップ状態にマップされます。 不確定テストを失敗として表示する場合は、値を true 設定します。
ConsiderFixturesAsSpecialTests false AssemblyInitializeAssemblyCleanupClassInitializeClassCleanup を、Visual Studio と Visual Studio Code の Test Explorer.trx ログで個別のエントリとして表示するには、この値を 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 ファイルで設定できます。 .runsettings ファイルで環境変数を指定することは、DOTNET_ROOTなどの環境変数の設定を必要とする一般プロジェクトをサポートするために必要です。 これらの変数は、テスト ホスト プロセスの生成中に設定され、ホストで使用できます。

次のコードは、環境変数を渡す .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 フラグは、テスト ホストが常に呼び出されるように環境変数がある場合に設定されます。