MSTest の構成
Microsoft テスト フレームワークである MSTest は、.NET アプリケーション向けテスト フレームワークです。 これにより、テストの記述および実行が可能になり、Visual Studio と Visual Studio Code テスト エクスプローラー、.NET CLI、および多くの CI パイプラインに統合されたテスト スイートを提供できます。
MSTest は、完全にサポートされているオープンソースのクロスプラットフォーム テスト フレームワークで、GitHub でホストされ、サポートされているすべての .NET ターゲット (.NET Framework、.NET Core、.NET、UWP、WinUI など) で動作します。
runsettings
.runsettings ファイルを使って、単体テストの実行方法を構成できます。 runsettings とプラットフォームに関連する構成の詳細については、VSTest の runsettings のドキュメント、または MSTest ランナーの runsettings のドキュメントを確認してください。
MSTest 要素
次の runsettings エントリを使用すると、MSTest の動作を構成できます。
構成 | Default | 値 |
---|---|---|
AssemblyCleanupTimeout | 0 | アセンブリ クリーンアップ メソッドの各インスタンスに適用するタイムアウトをグローバルに指定します。 アセンブリ クリーンアップ メソッドで指定された [Timeout] 属性は、グローバル タイムアウトをオーバーライドします。 |
AssemblyInitializeTimeout | 0 | アセンブリ初期化メソッドの各インスタンスに適用するタイムアウトをグローバルに指定します。 アセンブリ初期化メソッドで指定された [Timeout] 属性は、グローバル タイムアウトをオーバーライドします。 |
AssemblyResolution | False | 単体テストを検索して実行する場合、追加のアセンブリへのパスを指定できます。 たとえば、テスト アセンブリと同じディレクトリにない依存関係アセンブリにこれらのパスを使用します。 パスを指定するには、Directory Path 要素を使用します。 パスには環境変数を含めることができます。<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution> この機能は、.NET Framework ターゲットを使用している場合にのみ適用されます。 |
CaptureTraceOutput | true | 現在実行中のテストに関連付けられる Console.Write* 、Trace.Write* 、Debug.Write* API から送信されるテキスト メッセージをキャプチャします。 |
ClassCleanupLifecycle | EndOfClass | アセンブリの最後でクラスのクリーンアップを実行したい場合は、それを EndOfAssembly に設定します。 (EndOfClass が既定であり、ClassCleanup 動作のみであるため、MSTest v4 以降ではサポートされなくなりました) |
ClassCleanupTimeout | 0 | クラス クリーンアップ メソッドの各インスタンスに適用するタイムアウトをグローバルに指定します。 クラス クリーンアップ メソッドで指定された [Timeout] 属性は、グローバル タイムアウトをオーバーライドします。 |
ClassInitializeTimeout | 0 | クラス初期化メソッドの各インスタンスに適用するタイムアウトをグローバルに指定します。 クラス初期化メソッドで指定された [Timeout] 属性は、グローバル タイムアウトをオーバーライドします。 |
DeleteDeploymentDirectoryAfterTestRunIsComplete | true | テストの実行後に配置ディレクトリを保持するには、この値を false に設定します。 |
DeploymentEnabled | true | 値を false に設定すると、テスト メソッドで指定した配置項目が配置ディレクトリにコピーされません。 |
DeployTestSourceDependencies | true | テスト ソース参照を展開するかどうかを示す値。 |
EnableBaseClassTestMethodsFromOtherAssemblies | true | 継承するテスト クラスとは異なるアセンブリ内の基底クラスからのテスト メソッドの検出を有効にするかどうかを示す値。 |
ForcedLegacyMode | false | Visual Studio の以前のバージョンで、MSTest アダプターは、処理速度とスケーラビリティを向上するために最適化されました。 テストが実行される順序などの一部の動作は、Visual Studio の以前のエディションでの動作と完全に同じではない場合もあります。 以前のテスト アダプターを使うには、値を true に設定します。 たとえば、単体テスト用に指定された app.config ファイルがある場合は、この設定を使用することがあります。 より新しいアダプターを使用できるように、テストのリファクタリングを検討することをお勧めします。 |
MapInconclusiveToFailed | False | テストが結果不確定の状態で完了した場合は、テスト エクスプローラーでスキップ状態にマップされます。 結果不確定のテストを失敗として表示する場合は、この値を true に設定します。 |
MapNotRunnableToFailed | true | 実行不可能な結果を失敗したテストにマップするかどうかを示す値。 |
Parallelize | 並列処理を設定するために使われます。 Workers: 並列処理に使うスレッド/ワーカーの数。既定では、現在のコンピューターに搭載されたプロセッサの数です。 SCOPE: 並列処理のスコープ。 MethodLevel に設定できます。 既定では、ClassLevel です。 <Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize> |
|
SettingsFile | ここで、MSTest アダプターで使用するテスト設定ファイルを指定できます。 また、[設定] メニューからテスト設定ファイルを指定することもできます。 この値を指定する場合は、ForcedlegacyMode も true に設定する必要があります。 <ForcedLegacyMode>true</ForcedLegacyMode> |
|
TestCleanupTimeout | 0 | テスト クリーンアップ メソッドの各インスタンスに適用するタイムアウトをグローバルに指定します。 テスト クリーンアップ メソッドで指定された [Timeout] 属性は、グローバル タイムアウトをオーバーライドします。 |
TestInitializeTimeout | 0 | テスト初期化メソッドの各インスタンスに適用するタイムアウトをグローバルに指定します。 テスト初期化メソッドで指定された [Timeout] 属性は、グローバル タイムアウトをオーバーライドします。 |
TestTimeout | 0 | 指定されたグローバル テスト ケースのタイムアウトを取得します。 |
TreatClassAndAssemblyCleanupWarningsAsErrors | false | クラスのクリーンアップの失敗をエラーとして表示するには、この値を true に設定します。 |
TreatDiscoveryWarningsAsErrors | false | テスト検出の警告をエラーとして報告するには、この値を true に設定します。 |
ConsiderFixturesAsSpecialTests | false | Visual Studio、Visual Studio Code Test Explorer および .trx ログで、AssemblyInitialize 、AssemblyCleanup 、ClassInitialize 、ClassCleanup を個別のエンティティとして表示するには、この値を True に設定します。 |
TestRunParameter
要素
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>
テスト実行パラメーターでは、実行時にテストで使用できる変数と値の定義方法が指定します。 パラメーターには MSTest TestContext.Properties プロパティを使ってアクセスします。
private string _appUrl;
public TestContext TestContext { get; set; }
[TestMethod]
public void HomePageTest()
{
string _appUrl = TestContext.Properties["webAppUrl"];
}
テスト実行パラメーターを使用するには、パブリックの TestContext プロパティをテスト クラスに追加します。
.runsettings ファイルの例
次の XML は、一般的な .runsettings ファイルの内容を示しています。 このコードをコピーし、自分のニーズに合わせて編集します。
ファイルの各要素には既定値があるため、省略可能です。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- 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>
<!-- MSTest -->
<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>
</RunSettings>
.NET