.runsettings ファイルを使用した単体テストの構成
Visual Studio の単体テストは、*.runsettings ファイルを使用して構成できます。(拡張子 runsettings を使用していればファイル名は自由です。)たとえば、テストが実行される .NET Framework、テスト結果が配信されるディレクトリ、テストの実行中に収集されるデータを変更できます。
特殊な構成を行う必要がない場合、*.runsettings ファイルは不要です。このファイルが最もよく使われるのは、コード カバレッジをカスタマイズする場合です。
[!メモ]
.runsettings と .testsettings
テストを構成するファイルには、次の 2 種類があります。*.runsettings は、単体テストに使用されます。*.testsettings は、ラボ環境テスト、Web パフォーマンスおよびロード テストに使用されます。また、一部の種類の診断データ アダプター (Intellitrace など) およびイベント ログ アダプターをカスタマイズする場合にも使用されます。
2010 以前のエディションの Visual Studio では、単体テストをカスタマイズするためにも *.testsettings ファイルが使用されていました。これは現在でも可能ですが、*.runsettings ファイルで同等の構成を使用する場合より、テストの実行速度が遅くなります。
.runsettings ファイルによるテストのカスタマイズ
XML ファイルを Visual Studio ソリューションに追加し、ファイル名を test.runsettings に変更します。(ファイル名は自由ですが、拡張子には runsettings を使用する必要があります。)
ファイルの内容を以下のサンプルで置き換えます。
必要に応じてファイルを編集します。
[テスト] メニューの [テストの設定] をクリックし、[テスト設定ファイルの選択] をクリックします。
ソリューション内に複数の *.runsettings ファイルを作成し、[テストの設定] メニューを使用して状況に応じてそれらを有効または無効にすることができます。
このサンプル .runsettings ファイルをコピーする
一般的な *.runsettings ファイルを示します。すべての値には既定値があるため、ファイルの各要素は省略可能です。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Configurations that affect the Test Framework -->
<RunConfiguration>
<!-- 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>
</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>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
<!-- Adapter Specific sections -->
<!-- MSTest adapter -->
<MSTest>
<MapInconclusiveToFailed>True</MapInconclusiveToFailed>
<CaptureTraceOutput>false</CaptureTraceOutput>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
<DeploymentEnabled>False</DeploymentEnabled>
</MSTest>
</RunSettings>
.runsettings ファイルは、コード カバレッジを構成するためにも使用されます。
このトピックの残りの部分では、ファイルの内容について説明します。
.runsettings ファイルを編集する
.runsettings ファイルには、次の要素があります。
テストの実行の構成
ノード |
既定値 |
値 |
---|---|---|
ResultsDirectory |
テスト結果が配置されるディレクトリ。 |
|
TargetFrameworkVersion |
Framework40 |
Framework35、Framework40、Framework45 テストを検出して実行するために、どのバージョンの単体テスト フレームワークを使用するかを指定します。これは、単体テスト プロジェクトのビルド プロパティで指定した .NET プラットフォームのバージョンと異なっていてもかまいません。 |
TargetPlatform |
x86 |
x86、x64 |
TreatTestAdapterErrorsAsWarnings |
false |
false、true |
診断データ アダプター (データ コレクター)
DataCollectors 要素は、診断データ アダプターの設定を指定します。診断データ アダプターは、テスト対象の環境とアプリケーションに関する追加情報を収集するために使用します。各アダプターには既定の設定があるため、既定値を使用しない場合にのみ設定を指定する必要があります。
コード カバレッジ アダプター
コード カバレッジ データ コレクターは、アプリケーション コードのどの部分がテストで実行されたかを示すログを作成します。コード カバレッジの設定のカスタマイズの詳細については、「コード カバレッジ分析のカスタマイズ」を参照してください。
その他の診断データ アダプター
コード カバレッジ アダプターは、現在のところ、実行設定ファイルを使用してカスタマイズできる唯一のアダプターです。
他の種類の診断データ アダプターをカスタマイズするには、テスト設定ファイルを使用する必要があります。詳細については、「Visual Studio のテストにおけるテスト設定の指定」を参照してください。
MSTest の実行設定
これらは、[TestMethod] 属性を持つテスト メソッドを実行するテスト アダプターに固有の設定です。
構成 |
既定値 |
値 |
---|---|---|
ForcedLegacyMode |
false |
Visual Studio 2012 で、MSTest アダプターは処理速度と拡張性を高めるために最適化されました。テストが実行される順序などの一部の動作は、Visual Studio の以前のエディションでの動作と完全に同じではない場合もあります。以前のテスト アダプターを使用するには、この値を true に設定します。 たとえば、単体テスト用に指定された app.config ファイルがある場合は、これを使用することがあります。 より新しいアダプターを使用できるように、テストのリファクタリングを検討することをお勧めします。 |
IgnoreTestImpact |
false |
テストの影響機能は、MSTest で実行したとき、または Microsoft Test Manager から実行したときに最近の変更の影響を受けるテストの優先順位を付けます。この設定は機能を非アクティブ化します。詳細については、「方法: コードの変更後に実行するテストをチェックするためのデータを収集する」を参照してください。 |
SettingsFile |
ここで、MSTest アダプターで使用するテスト設定ファイルを指定できます。[テスト] メニューの [テストの設定]、[テスト設定ファイルの選択] を使用してテスト設定ファイルを指定することもできます。 この値を指定する場合は、ForcedlegacyMode も true に設定する必要があります。
|
|
KeepExecutorAliveAfterLegacyRun |
false |
テストの実行が完了した後、MSTest がシャットダウンされます。テストの一部として起動されたプロセスは、現時点で中止されます。テスト実行プログラムを中止しない場合は、この構成を true に切り替えます。 たとえば、コード化された UI テストの間にブラウザーの実行を維持するためにこれを使用できます。 |
DeploymentEnabled |
true |
これを false に設定すると、テスト メソッドで指定した配置項目が配置ディレクトリにコピーされません。 |
CaptureTraceOutput |
true |
Trace.WriteLine を使用して、テスト メソッドからデバッグ トレースに書き込むことができます。この構成を使用して、これらのデバッグ トレースをオフにできます。 |
DeleteDeploymentDirectoryAfterTestRunIsComplete |
true |
この値を false に設定することで、テストの実行後に配置ディレクトリを保持できます。 |
MapInconclusiveToFailed |
false |
テストが結果不確定の状態で返された場合、通常はテスト エクスプローラーで [スキップ] 状態にマップされます。結果不確定のテストを [失敗] として表示する場合は、この構成を使用します。 |
InProcMode |
false |
テストを MSTest アダプターと同じプロセスで実行する場合は、この値を true に設定します。この設定で、わずかにパフォーマンスが向上します。ただし、あるテストが例外で終了した場合、他のテストは続行されません。 |