Microsoft.Testing.Platform (MTP) v1 から v2 への移行

安定バージョンの MTP v2 が利用可能になりました。 この移行ガイドでは、MTP v2 の変更点と、このバージョンへの移行方法について説明します。

ソースコードの破壊的変更

これらは、移行後にビルド エラーを引き起こす可能性のある破壊的変更です。

サポートされていないターゲット フレームワークを削除しました

.NET Core 3.1 から .NET 7 へのターゲット フレームワークのサポートは削除されます。 サポートされている .NET の最小バージョンは .NET 8 です。 この変更は .NET Framework には影響しません。 .NET Framework 4.6.2 は、引き続きサポートされる最小の .NET Framework ターゲットです。

古い型を削除しました

MTP v1 では、次の型は古い形式としてマークされていました。 MTP v2 では、これらは完全に削除されます。

  • ITestApplicationLifecycleCallbacks: 代わりに ITestHostApplicationLifetime を使用します。
  • TestNodeFileArtifact: 代わりに FileArtifactProperty を使用します。
  • KeyValuePairStringProperty: 代わりに TestMetadataProperty を使用します。
  • TestSessionContext.Client: 代わりに IClientInfo を使用します。

この破壊的変更は、テスト フレームワークの一般的なユーザーには影響しません。 これは、テスト フレームワークの作成者と拡張機能の作成者にのみ影響します。

API シグネチャの変更

この破壊的変更は、テスト フレームワークの一般的なユーザーには影響しません。 これは、テスト フレームワークの作成者と拡張機能の作成者にのみ影響します。

動作の破壊的変更

これらは、実行時の動作に影響を与える可能性のある破壊的変更です。

VSTest ベースとの互換性 dotnet test

dotnet test コマンドには、次の 2 つの実装があります。

  • VSTest ベースの実装: これは、.NET 9 SDK までの唯一の実装でした。
  • MTP ベースの実装: これは .NET 10 SDK 以降で追加されました。

.NET 10 SDK で MTP テスト プロジェクトを実行するには、MTP ベースの dotnet test へのオプトインが必要になり、以前は MTP v1 の MSBuild プロパティ TestingPlatformDotnetTestSupport 有効にされていた VSTest ベースの実装では実行できなくなります。

MTP ベースの実装をオプトインするには、次の例に示すように、テスト ランナーを Microsoft.Testing.Platform として設定するように、リポジトリまたはソリューション ルートに global.json を作成します (または、既にある場合は既存の global.json を更新します)。

{
  "test": {
    "runner": "Microsoft.Testing.Platform"
  }
}

MTP v2 で VSTest ベースの dotnet test を実行しようとすると、次のエラーが発生します。

VSTest ターゲットを使用したテストは、.NET 10 SDK 以降の MTP でサポートされなくなりました。 dotnet テストを使用する場合は、新しい dotnet テスト エクスペリエンスにオプトインする必要があります。 詳細については、https://aka.ms/dotnet-test-mtp-error を参照してください。

コマンド ライン オプションの名前を変更する

  • --diagnostic-output-fileprefixコマンド ライン オプションの名前が --diagnostic-file-prefix に変更されました。
  • --diagnostic-filelogger-synchronouswriteコマンド ライン オプションの名前が --diagnostic-synchronous-write に変更されました。