.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. (拡張子 ".runsettings" を使用していればファイル名は自由です。)たとえば、テストが実行される .NET Framework のバージョン、テスト結果が配信されるディレクトリ、テストの実行中に収集されるデータを変更できます。(The file name doesn't matter, provided you use the extension '.runsettings'.) For example, you can change the .NET Framework version on which the tests will be run, the directory where test results are delivered, and the data collected during a test run.

特殊な構成を行う必要がない場合、\.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.

.runsettings ファイルによるテストのカスタマイズCustomizing tests with a .runsettings file

  1. XML ファイルを Visual Studio ソリューションに追加し、ファイル名を test.runsettings に変更します。Add an XML file to your Visual Studio solution and rename it to test.runsettings. (ファイル名は自由ですが、拡張子には runsettings を使用する必要があります。)(The filename doesn't matter, but the extension must be .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.

実行設定ファイルの有効化Enabling a run settings file

.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"?>  
<RunSettings>  
  <!-- Configurations that affect the Test Framework -->  
  <RunConfiguration>  
    <MaxCpuCount>1</MaxCpuCount>  
    <!-- Path relative to solution directory -->  
    <ResultsDirectory>.\TestResults</ResultsDirectory>  

    <!-- [x86] | x64    
      - You can also change it from menu Test, Test Settings, Default Processor Architecture -->  
    <TargetPlatform>x86</TargetPlatform>  

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

    <!-- Path to Test Adapters -->  
    <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>  
  </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>  

    </DataCollectors>  
  </DataCollectionRunSettings>  

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

  <!-- 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 ファイルは、コード カバレッジを構成するためにも使用されます。The .runsettings file is also used to configure Code Coverage.

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

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

.runsettings ファイルには、次の要素があります。The .runsettings file has the following elements.

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

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

テストを検出して実行するために、どのバージョンの単体テスト フレームワークを使用するかを指定します。This 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 controls the degree of parallel test execution when running unit tests, using available cores on the machine. テストの実行エンジンは、使用可能な各コア上の別個のプロセスとして起動し、アセンブリ、DLL、または関連する成果物など、実行するテストが入ったコンテナーを各コアに与えます。The test execution engine starts as a distinct process on each available core and gives each core a container with tests to run, like 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

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

DataCollectors 要素は、診断データ アダプターの設定を指定します。The DataCollectors element specifies settings of diagnostic data adapters. 診断データ アダプターは、テスト対象の環境とアプリケーションに関する追加情報を収集するために使用します。Diagnostic data adapters are used to 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.

TestRunParametersTestRunParameters

TestRunParameters は、実行時にテストで使用できる変数と値の定義方法を提供します。TestRunParameters provides a way to define variables and values that are available to the tests at runtime.

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 has been 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 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 will also be killed at this time. テスト実行プログラムを中止しない場合は、この構成を true に切り替えます。If you want to keep the test executor alive, turn this configuration to true.

たとえば、コード化された UI テストの間にブラウザーの実行を維持するためにこれを使用できます。For example, you could use this to keep the browser running between coded UI tests.
DeploymentEnabledDeploymentEnabled truetrue これを false に設定すると、テスト メソッドで指定した配置項目が配置ディレクトリにコピーされません。If you set this 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 showed 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

コード カバレッジ分析のカスタマイズCustomizing Code Coverage Analysis