次の方法で共有


MSTest ランナーの概要

MSTest ランナーは、あらゆるコンテキスト (継続的インテグレーション (CI) パイプライン、CLI、Visual Studio テスト エクスプローラー、VS Code テキスト エクスプローラーなど) でテストを実行するための、 VSTest に代わる軽量で移植可能な代替手段です。 MSTest ランナーは MSTest テスト プロジェクトに直接埋め込まれており、テストの実行に必要な他のアプリの依存関係 (vstest.consoledotnet 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 プロパティを追加し、 OutputTypeExe に設定することで、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 ファイル ではなく、Directory.Build.props ファイルに プロパティを設定することをお勧めします。

構成とフィルター

.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"