.runsettings ファイルを使用して単体テストを構成するConfigure unit tests by using a .runsettings file

Visual Studio の単体テストは、.runsettings ファイルを使用して構成できます。Unit tests in Visual Studio can be configured by using a .runsettings file. たとえば、テストが実行される .NET Framework のバージョン、テスト結果のディレクトリ、テストの実行中に収集されるデータを変更できます。For example, you can change the .NET Framework version on which the tests are run, the directory for the test results, or the data that's collected during a test run.


拡張子 ".runsettings" を使用していればファイル名は自由です。The file name doesn't matter, as long as you use the extension '.runsettings'.

特殊な構成を行う必要がない場合、.runsettings ファイルは不要です。If you don't require any special configuration, you don't need a .runsettings file. .runsettings ファイルを最もよく使うのは、コード カバレッジ分析をカスタマイズする場合です。The most common use of a .runsettings file is to customize Code coverage analysis.

テストをカスタマイズするCustomize tests

  1. XML ファイルを Visual Studio ソリューションに追加し、ファイル名を test.runsettings に変更します。Add an XML file to your Visual Studio solution and rename it to test.runsettings.

  2. この後で示す例の XML でファイルの内容を置き換え、必要に応じてカスタマイズします。Replace the file contents with the XML from the example that follows, and customize it as needed.

  3. [テスト] メニューから [テストの設定] > [テスト設定ファイルの選択] の順に選択します。On the Test menu, choose Test Settings > Select Test Settings File.

ソリューション内に複数の .runsettings ファイルを作成し、[テストの設定] メニューを使用して状況に応じてそれらを有効または無効にすることができます。You can create more than one .runsettings file in your solution, and enable or disable them at different times by using the Test Settings menu.


.runsettings ファイルの例Example .runsettings file

一般的な .runsettings ファイルを次に示します。Following is a typical .runsettings file. すべての値には既定値があるため、ファイルの各要素は省略可能です。Each element of the file is optional, because every value has a default.

<?xml version="1.0" encoding="utf-8"?>
  <!-- Configurations that affect the Test Framework -->
    <!-- Path relative to solution directory -->

    <!-- x86 or x64
      - You can also change it from menu Test, Test Settings, Default Processor Architecture -->

    <!-- Framework35 | [Framework40] | Framework45 -->

    <!-- Path to Test Adapters -->

     <!--TestSessionTimeout is only available with Visual Studio 2017 version 15.5 and higher -->
     <!-- Specify timeout in milliseconds. A valid value should be greater than 0 -->

  <!-- Configurations for data collectors -->
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

            <!-- We recommend you do not change the following values: -->


      <!--Video data collector is only available with Visual Studio 2017 version 15.5 and higher -->
      <DataCollector uri="datacollector://microsoft/VideoRecorder/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder.VideoRecorderDataCollector, Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Screen and Voice Recorder">


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

  <!-- Adapter Specific sections -->

  <!-- MSTest adapter -->
      <Directory Path="D:\myfolder\bin\" includeSubDirectories="false"/>


.runsettings ファイルは、コード カバレッジ分析を構成するためにも使用されます。The .runsettings file is also used to configure Code coverage analysis.

この記事の残りの部分では、ファイルの内容について説明します。The remainder of this article describes the file content.

.runsettings ファイルを編集するEdit your .runsettings file

後続のセクションでは、.runsettings ファイルの要素の詳細について説明します。The sections that follow detail the elements of a .runsettings file.

テストの実行の構成Test run configuration

ノードNode 既定値Default Values
ResultsDirectory テスト結果が配置されるディレクトリ。The directory where test results are placed.
TargetFrameworkVersion Framework40Framework40 Framework35、Framework40、Framework45Framework35, Framework40, Framework45

この設定では、テストを検出して実行するために、どのバージョンの単体テスト フレームワークを使用するかを指定します。This setting specifies which version of the unit test framework is used to discover and execute the tests. これは、単体テスト プロジェクトのビルド プロパティで指定した .NET プラットフォームのバージョンと異なっていてもかまいません。It can be different from the version of the .NET platform that you specify in the build properties of the unit test project.
TargetPlatform x86x86 x86、x64x86, x64
TreatTestAdapterErrorsAsWarnings Falsefalse false、truefalse, true
TestAdaptersPaths TestAdapter が配置されているディレクトリの 1 つまたは複数のパスOne or multiple paths to the directory where the TestAdapters are located
MaxCpuCount 11 この設定では、単体テストを実行するときに、コンピューターで使用可能なコアを使ってテストを並列実行する程度を制御します。This setting controls the degree of parallel test execution when running unit tests, using available cores on the machine. テストの実行エンジンは、使用可能な各コア上の別個のプロセスとして起動し、実行するテストが入ったコンテナーを各コアに与えます。The test execution engine starts as a distinct process on each available core, and gives each core a container with tests to run. コンテナーとしては、アセンブリ、DLL、または関連する成果物を指定できます。A container can be an assembly, DLL, or relevant artifact. テスト コンテナーはスケジューリングの単位です。The test container is the scheduling unit. 各コンテナーでは、テストはテスト フレームワークに従って実行されます。In each container, the tests are run according to the test framework. コンテナーが多くある場合、あるコンテナー内のテストの実行を終了したプロセスには、次の使用可能なコンテナーが与えられます。If there are many containers, then as processes finish executing the tests in a container, they are given the next available container.

MaxCpuCount には次の値を指定することができます。MaxCpuCount can be:

n。ここで n は、1 以上、コアの数以下です。最大 n 個のプロセスが起動しますn, where 1 <= n <= number of cores: up to n processes will be launched

n。ここで n = その他の値です。起動するプロセスの数は、コンピューター上の利用可能なコア数以下になりますn, where n = any other value: the number of processes launched will be up to as many as available cores on the machine
TestSessionTimeout 指定されたタイムアウトを超えたときにユーザーがテスト セッションを終了できるようにします。Allows users to terminate a test session when it exceeds a given timeout. タイムアウトを設定すると、リソースが適切に消費され、テスト セッションが設定された時間に制限されます。Setting a timeout ensures that resources are well consumed and test sessions are constrained to a set time. この設定は、Visual Studio 2017 バージョン 15.5 以降で使用できます。The setting is available in Visual Studio 2017 version 15.5 and later.

診断データ アダプター (データ コレクター)Diagnostic Data Adapters (Data Collectors)

DataCollectors 要素は、診断データ アダプターの設定を指定します。The DataCollectors element specifies settings of diagnostic data adapters. 診断データ アダプターは、テスト対象の環境とアプリケーションに関する追加情報を収集します。Diagnostic data adapters gather additional information about the environment and the application under test. 各アダプターには既定の設定があるため、既定値を使用しない場合にのみ設定を指定する必要があります。Each adapter has default settings, and you only have to provide settings if you don't want to use the defaults.

コード カバレッジ アダプターCode coverage adapter

コード カバレッジ データ コレクターは、アプリケーション コードのどの部分がテストで実行されたかを示すログを作成します。The code coverage data collector creates a log of which parts of the application code have been exercised in the test. コード カバレッジの設定のカスタマイズの詳細については、「コード カバレッジ分析のカスタマイズ」を参照してください。For more information about customizing the settings for code coverage, see Customizing Code Coverage Analysis.

ビデオ データ コレクターVideo data collector

ビデオ データ コレクターは、テストが実行されたときに、画面記録をキャプチャします。The video data collector captures a screen recording when tests are run. この記録は、UI テストのトラブルシューティングに役立ちます。This recording is useful for troubleshooting UI tests. ビデオ データ コレクターは、Visual Studio 2017 バージョン 15.5 以降で使用できます。Video data collector is available in Visual Studio 2017 version 15.5 and later.

他の種類の診断データ アダプターをカスタマイズするには、テスト設定ファイルを使用する必要があります。To customize any other type of diagnostic data adapter, you must use a test settings file.


TestRunParameters は、実行時にテストで使用できる変数と値の定義方法を提供します。TestRunParameters provides a way to define variables and values that are available to the tests at runtime. これらの変数にアクセスするには、TestContext オブジェクトを使用します。These variables can be accessed by using the TestContext object.

public void HomePageTest()
    string appURL = TestContext.Properties["webAppUrl"];

TestContext を使用するには、プライベートの TestContext フィールドおよびパブリックの TestContext プロパティをテスト クラスに追加します。To use TestContext, add a private TestContext field and a public TestContext property to your test class.

MSTest の実行設定MSTest Run Settings

これらは、 [TestMethod] 属性を持つテスト メソッドを実行するテスト アダプターに固有の設定です。These settings are specific to the test adapter that runs test methods that have the [TestMethod] attribute.

構成Configuration 既定値Default Values
ForcedLegacyModeForcedLegacyMode Falsefalse Visual Studio 2012 で、MSTest アダプターは処理速度を向上させ、よりスケーラブルになるように最適化されました。In Visual Studio 2012, the MSTest adapter was optimized to make it faster and more scalable. テストが実行される順序などの一部の動作は、Visual Studio の以前のエディションでの動作と完全に同じではない場合もあります。Some behavior, such as the order in which tests are run, might not be exactly as it was in previous editions of Visual Studio. 以前のテスト アダプターを使用するには、この値を true に設定します。Set this value true to use the older test adapter.

たとえば、単体テスト用に指定された app.config ファイルがある場合は、この設定を使用することがあります。For example, you might use this setting if you have an app.config file specified for a unit test.

より新しいアダプターを使用できるように、テストのリファクタリングを検討することをお勧めします。We recommend that you consider refactoring your tests to allow you to use the newer adapter.
IgnoreTestImpactIgnoreTestImpact Falsefalse テストの影響機能は、MSTest で実行したとき、または Microsoft Test Manager から実行したときに最近の変更の影響を受けるテストの優先順位を付けます。The test impact feature prioritizes tests that are affected by recent changes, when run in MSTest or from Microsoft Test Manager. この設定は機能を非アクティブ化します。This setting deactivates the feature. 詳細については、「方法: コードの変更後に実行するテストをチェックするためのデータを収集する」を参照してください。For more information, see How to: Collect Data to Check Which Tests Should be Run After Code Changes.
SettingsFileSettingsFile ここで、MSTest アダプターで使用するテスト設定ファイルを指定できます。You can specify a test settings file to use with the MS Test adapter here. [テスト] メニューの [テストの設定][テスト設定ファイルの選択] を使用してテスト設定ファイルを指定することもできます。You can also specify a test settings file using the menu Test, Test Settings, Select Test Settings File.

この値を指定する場合は、 ForcedlegacyModetrueに設定する必要があります。If you specify this value, you must also set the ForcedlegacyMode to true.

<RunSettings> <MSTest> <SettingsFile>my.testsettings</SettingsFile> <ForcedLegacyMode>true</ForcedLegacyMode> </MSTest> </RunSettings>
KeepExecutorAliveAfterLegacyRunKeepExecutorAliveAfterLegacyRun Falsefalse テストの実行が完了した後、MSTest がシャットダウンされます。After a test run is completed, MSTest is shut down. テストの一部として起動されたプロセスも中止されています。Any process that is launched as part of the test is also killed. テスト実行プログラムを中止しない場合は、この構成を true に切り替えます。If you want to keep the test executor alive, turn this configuration to true.

たとえば、コード化された UI テストの間にブラウザーの実行を維持するために、この設定を使用できます。For example, you could use this setting to keep the browser running between coded UI tests.
DeploymentEnabledDeploymentEnabled truetrue 値を false に設定すると、テスト メソッドで指定した配置項目が配置ディレクトリにコピーされません。If you set the value to false, deployment items that you have specified in your test method will not be copied to the deployment directory.
CaptureTraceOutputCaptureTraceOutput truetrue Trace.WriteLine を使用して、テスト メソッドからデバッグ トレースに書き込むことができます。You can write to the debug trace from your Test method using Trace.WriteLine. この構成を使用して、これらのデバッグ トレースをオフにできます。Using this configuration, you can turn off these debug traces.
DeleteDeploymentDirectoryAfterTestRunIsCompleteDeleteDeploymentDirectoryAfterTestRunIsComplete truetrue この値を false に設定することで、テストの実行後に配置ディレクトリを保持できます。You can retain the Deployment Directory after a test run by setting this value to false.
MapInconclusiveToFailedMapInconclusiveToFailed Falsefalse テストが結果不確定の状態で返された場合、通常はテスト エクスプローラーで [スキップ] 状態にマップされます。If a test returns with an inconclusive status, it is usually mapped to Skipped status in Test Explorer. 結果不確定のテストを [失敗] として表示する場合は、この構成を使用します。If you want Inconclusive tests to be shown as Failed, use this configuration.
InProcModeInProcMode Falsefalse テストを MSTest アダプターと同じプロセスで実行する場合は、この値を true に設定します。If you want your tests to be run in the same process as the MS Test adapter, set this value to true. この設定で、わずかにパフォーマンスが向上します。This setting provides a minor performance gain. ただし、あるテストが例外で終了した場合、他のテストは続行されません。But if a test exits with an exception, the other tests will not continue.
AssemblyResolutionAssemblyResolution Falsefalse 単体テストを検索して実行する場合、追加のアセンブリへのパスを指定できます。You can specify paths to additional assemblies when finding and running unit tests. たとえば、テスト アセンブリと同じディレクトリに存在しない依存関係アセンブリにこれらのパスを使用します。For example, use these paths for dependency assemblies that don't reside in the same directory as the test assembly. パスを指定するには、"ディレクトリ パス" 要素を使用します。To specify a path, use a "Directory Path" element. パスには、環境変数を含めることができます。Paths can contain environment variables.

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

関連項目See also