次の方法で共有


の VSTest モードで Microsoft.Testing.Platform を使用する dotnet test

この記事では、dotnet testの VSTest モードで実行する場合に Microsoft.Testing.Platform.MSBuild によって提供される Microsoft.Testing.Platform のdotnet testの統合について説明します。

この記事に進む前に、最初に dotnet テストを使用したテストを読み、 dotnet test の 2 つのモード (VSTest モードと MTP モード) について説明することをお勧めします。

既定では、 dotnet test は VSTest を使用してテストを実行します。 Microsoft.Testing.Platformdotnet testのサポートを有効にするには、次の 2 つのオプションがあります。

  1. VSTest モードで dotnet test を使用し、プロジェクト ファイル <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> MSBuild プロパティを指定します。
  2. MTP モードで dotnet test を使用すると、.NET 10 SDK 以降でのみサポートされる、 dotnet testでの MTP のネイティブ サポートが増えます。

どちらのオプションも、 dotnet テストを使用したテストに関する記事で詳しく説明されています。

重要

この記事の残りの部分は、 dotnet testの VSTest モードに固有です。

注意事項

.NET 10 SDK 以降では、Microsoft.Testing.Platform で実行する場合は、 dotnet test の VSTest モードを使用しないことをお勧めします。

テストごとにエラーを表示する

デフォルトでは、テストの失敗は .log ファイルにまとめられ、テスト プロジェクトごとに 1 つの失敗が MSBuild に報告されます。

失敗したテストごとにエラーを表示するには、コマンド ラインで -p:TestingPlatformShowTestsFailure=true を指定するか、プロジェクト ファイルに <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> プロパティを追加します。

コマンド ライン:

dotnet test -p:TestingPlatformShowTestsFailure=true

あるいは、プロジェクトファイルで:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>

  </PropertyGroup>

  <!-- ... -->

</Project>

完全なプラットフォーム出力を表示する

既定では、基となるテスト実行可能ファイルから書き込まれたすべてのコンソール出力が取り込まれ、ユーザーには表示されません。 これには、バナー、バージョン情報、書式設定されたテスト情報などがあります。

この情報を MSBuild 出力結果と同時に表示するには、 <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>を使います。

このオプションは、テスト フレームワークがユーザー出力 (Console.WriteLine または他の同様の書き込み方法でコンソールに書き込まれたもの) を取り込む方法には影響しません。

コマンド ライン:

dotnet test -p:TestingPlatformCaptureOutput=false

あるいは、プロジェクトファイルで:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>

  </PropertyGroup>

  <!-- ... -->

</Project>

重要

上記のすべての例では、csproj ファイルに EnableMSTestRunnerTestingPlatformDotnetTestSupportTestingPlatformCaptureOutput などのプロパティが追加されます。 ただし、これらのプロパティは Directory.Build.props で設定することを強くお勧めします。 そうすれば、すべてのテスト プロジェクト ファイルに追加する必要がなくなり、これらのプロパティを設定していない新しいプロジェクトを導入しても、VSTest と Microsoft.Testing.Platform のプロジェクトが混在するリスク (正しく動作しない可能性があり、かつサポートされていないシナリオ) がなくなります。