MSTest ランナーの概要
MSTest ランナーは、あらゆるコンテキスト (継続的インテグレーション (CI) パイプライン、CLI、Visual Studio テスト エクスプローラー、VS Code テキスト エクスプローラーなど) でテストを実行するための、 VSTest に代わる軽量で移植可能な代替手段です。 MSTest ランナーは MSTest テスト プロジェクトに直接埋め込まれており、テストの実行に必要な他のアプリの依存関係 (vstest.console
や dotnet test
など) はありません。
MSTest ランナーはオープンソースであり、 Microsoft.Testing.Platform
ライブラリに基づいて構築されています。 Microsoft.Testing.Platform
のコードは、 microsoft/testfx GitHub リポジトリにあります。 MSTest ランナーは、 MSTest in 3.2.0-preview.23623.1
以降にバンドルされています。
MSTest プロジェクトで MSTest ランナーを有効にする
MSTest SDKを使用すると、プロジェクトの構成とプロジェクトの更新が大幅に簡素化され、プラットフォーム (MSTestランナー) とその拡張機能のバージョンが適切に配置されるため、 MSTest SDK を使用することをお勧めします。
MSTest SDK
を使用する場合、既定では MSTest ランナーの使用がオプトインされます。
<Project Sdk="MSTest.Sdk/3.3.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
または、プロジェクト ファイル内で EnableMSTestRunner
プロパティを追加し、 OutputType
を Exe
に設定することで、MSTest ランナーを有効にすることもできます。 また、 MSTest 3.2.0-preview.23623.1
以降を使用していることを確認する必要もあります。
次のプロジェクト ファイルの例を考えてみましょう。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Enable the MSTest runner, this is an opt-in feature -->
<EnableMSTestRunner>true</EnableMSTestRunner>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<!--
MSTest meta package is the recommended way to reference MSTest.
It's equivalent to referencing:
Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework
MSTest.Analyzers
-->
<PackageReference Include="MSTest" Version="3.2.0" />
<!--
Coverlet collector isn't compatible with MSTest runner, you can
either switch to Microsoft CodeCoverage (as shown below),
or switch to be using coverlet global tool
https://github.com/coverlet-coverage/coverlet#net-global-tool-guide-suffers-from-possible-known-issue
-->
<PackageReference Include="Microsoft.Testing.Extensions.CodeCoverage"
Version="17.10.1" />
</ItemGroup>
</Project>
ヒント
ソリューション内のすべてのテスト プロジェクトが MSTest ランナーを使用していることを確認するために、csproj ファイル
構成とフィルター
.runsettings
MSTest ランナーは、コマンド ライン オプション を使用した --settings
をサポートしています。 サポートされている MSTest エントリの完全な一覧については、「MSTest の構成: Runsettings」を参照してください。 次のコマンドはさまざまな使用例を示しています。
dotnet run
の使用
dotnet run --project Contoso.MyTests -- --settings config.runsettings
dotnet exec
の使用
dotnet exec Contoso.MyTests.dll --settings config.runsettings
または
dotnet Contoso.MyTests.dll --settings config.runsettings
実行可能ファイルを使用:
Contoso.MyTests.exe --settings config.runsettings
テスト フィルター
コマンド ライン オプション を使用して、シームレスにテスト --filter
を提供できます。 次のコマンドにより例がいくつか示されます。
dotnet run
の使用
dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
dotnet exec
の使用
dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
または
dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
実行可能ファイルを使用:
Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
.NET