次の方法で共有


dotnet test で Microsoft.Testing.Platform を使用する

この記事では、 Microsoft.Testing.Platformの使用時に dotnet test を使ってテストを実行する方法と、Microsoft.Testing.Platform を使ってテストを実行するときに生成される MSBuild 出力を構成するために使用できるさまざまなオプションについて説明します。

この記事では、 dotnet test を使って、 Microsoft.Testing.Platformを使うソリューション (*.sln) 内のすべてのテストを実行する方法について説明します。

dotnet test 統合

dotnet test コマンドを使うと、ソリューション、プロジェクト、または既にビルドされたアセンブリからテストを実行できます。 Microsoft.Testing.Platform は、このインフラストラクチャに接続して、特に VSTest から Microsoft.Testing.Platform に移行する場合に、テストを実行するための統一された方法を提供します。

dotnet test の統合 - VSTest モード

Microsoft.Testing.Platform には、 dotnet test をシームレスに操作するための 互換性レイヤー (VSTest Bridge) が用意されています。

テストを実行するには、以下を実行します。

dotnet test

このレイヤーでは、VSTest を介してテストを実行し、VSTest テスト フレームワーク アダプター レベルで統合します。

dotnet test - Microsoft.Testing.Platform モード

既定では、VSTest は Microsoft.Testing.Platform テストの実行に使用されます。 プロジェクト ファイルで <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> 設定を指定することで、完全な Microsoft.Testing.Platform を有効にすることができます。 この設定により、VSTest が無効になり、 Microsoft.Testing.Platform.MSBuild NuGet パッケージへの推移的な依存関係により、ソリューション内のすべての Microsoft.Testing.Platform 個の強化されたテスト プロジェクトが直接実行されます。 直接の Microsoft.Testing.Platform テスト プロジェクトに合格すると、シームレスに機能します。

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

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

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

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

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

  </PropertyGroup>

  <!-- ... -->

</Project>

このモードでは、次のいずれかの方法でテスト アプリケーションを呼び出すために使用される追加のパラメータを指定できます。

  • Microsoft.Testing.Platform バージョン 1.4 (MSTest バージョン 3.6 に含まれています) 以降では、コマンド ラインで二重ダッシュ -- の後にオプションを指定できます。

    dotnet test -- --minimum-expected-tests 10
    
  • コマンドラインで TestingPlatformCommandLineArguments MSBuild プロパティを使用すると、次のようになります。

    dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
    

    またはプロジェクト ファイル内:

    <PropertyGroup>
      ...
      <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
    </PropertyGroup>
    

その他の MSBuild オプション

MSBuild 統合では、プロジェクト ファイル内またはコマンド ラインのグローバル プロパティ (-p:TestingPlatformShowTestsFailure=trueなど) を通じて指定できるオプションが提供されます。

使用できるオプションは次のとおりです。

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

デフォルトでは、テストの失敗は .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>
    <IsTestProject>true</IsTestProject>

    <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>
    <IsTestProject>true</IsTestProject>

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

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

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

  </PropertyGroup>

  <!-- ... -->

</Project>