の VSTest モードで Microsoft.Testing.Platform を使用する
この記事では、dotnet test
の VSTest モードで実行する場合に Microsoft.Testing.Platform.MSBuild によって提供される Microsoft.Testing.Platform のdotnet test
の統合について説明します。
この記事に進む前に、最初に dotnet テストを使用したテストを読み、 dotnet test
の 2 つのモード (VSTest モードと MTP モード) について説明することをお勧めします。
既定では、 dotnet test
は VSTest を使用してテストを実行します。
Microsoft.Testing.Platform
でdotnet test
のサポートを有効にするには、次の 2 つのオプションがあります。
- VSTest モードで
dotnet test
を使用し、プロジェクト ファイル<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
MSBuild プロパティを指定します。 - 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 ファイルに EnableMSTestRunner
、TestingPlatformDotnetTestSupport
、TestingPlatformCaptureOutput
などのプロパティが追加されます。 ただし、これらのプロパティは Directory.Build.props
で設定することを強くお勧めします。 そうすれば、すべてのテスト プロジェクト ファイルに追加する必要がなくなり、これらのプロパティを設定していない新しいプロジェクトを導入しても、VSTest と Microsoft.Testing.Platform のプロジェクトが混在するリスク (正しく動作しない可能性があり、かつサポートされていないシナリオ) がなくなります。
.NET