次の方法で共有


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

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

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

dotnet test 統合

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

dotnet test の統合 - VSTest モード

Microsoft.Testing.Platform には、 をシームレスに操作するための dotnet test が用意されています。

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

dotnet test

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

dotnet test - Microsoft.Testing.Platform モード

既定では、dotnet test は VSTest 動作を使用してテストを実行します。 dotnet testMicrosoft.Testing.Platform のサポートを有効にするには、プロジェクト ファイルで <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> 設定を指定します。

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

メモ

Directory.Build.propsTestingPlatformDotnetTestSupport プロパティを設定することを強くお勧めします。 これにより、すべてのテスト プロジェクト ファイルに追加する必要はありません。また、このプロパティを設定しない新しいプロジェクトを導入するリスクがなく、最終的に VSTest であるプロジェクトもあれば、Microsoft.Testing.Platform であるプロジェクトもあり、正しく動作しない可能性があり、サポートされていないシナリオであるソリューションが発生するリスクはありません。

重要

TestingPlatformDotnetTestSupporttrue に設定されているにもかかわらず、dotnet test で定義されているコマンド ライン オプションのほとんどは VSTest 指向のままであり、Microsoft.Testing.Platform ベースのテストには影響しません。 Microsoft.Testing.Platformに引数を指定するには、「Microsoft.Testing.Platform コマンド ライン引数と dotnet test」で説明されているいずれかのメソッドを使用する必要があります。

次の一覧では、Microsoft.Testing.Platformでサポートされているすべての dotnet test コマンド ライン オプションについて説明します。

  • -a|--arch <ARCHITECTURE>
  • --artifacts-path <ARTIFACTS_DIR>
  • -c|--configuration <CONFIGURATION>
  • -f|--framework <FRAMEWORK>
  • -e|--environment <NAME="VALUE">
  • --interactive
  • --no-build
  • --nologo
  • --no-restore
  • -o|--output <OUTPUT_DIRECTORY>
  • --os <OS>
  • -r|--runtime <RUNTIME_IDENTIFIER>
  • -v|--verbosity <LEVEL>

これらの引数は、ビルド ステップにリンクされ、使用されるテスト プラットフォームに依存しないため、サポートされています。

dotnet test を使用する Microsoft.Testing.Platform コマンド ライン引数

テスト アプリケーションの呼び出しに使用される引数は、次のいずれかの方法で指定できます。

  • 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>

重要

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