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 test
で Microsoft.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.props
で TestingPlatformDotnetTestSupport
プロパティを設定することを強くお勧めします。 これにより、すべてのテスト プロジェクト ファイルに追加する必要はありません。また、このプロパティを設定しない新しいプロジェクトを導入するリスクがなく、最終的に VSTest であるプロジェクトもあれば、Microsoft.Testing.Platform であるプロジェクトもあり、正しく動作しない可能性があり、サポートされていないシナリオであるソリューションが発生するリスクはありません。
重要
TestingPlatformDotnetTestSupport
が true
に設定されているにもかかわらず、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 ファイルに EnableMSTestRunner
、TestingPlatformDotnetTestSupport
、TestingPlatformCaptureOutput
などのプロパティが追加されます。 ただし、これらのプロパティは Directory.Build.props
で設定することを強くお勧めします。 そうすれば、すべてのテスト プロジェクト ファイルに追加する必要がなくなり、これらのプロパティを設定していない新しいプロジェクトを導入しても、VSTest と Microsoft.Testing.Platform のプロジェクトが混在するリスク (正しく動作しない可能性があり、かつサポートされていないシナリオ) がなくなります。
.NET