從 Microsoft.Testing.Platform (MTP) 版本1遷移至版本2

穩定版 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 命令有兩個實作:

  • VSTest 型實作:這是 .NET 9 SDK 之前的唯一實作。
  • MTP 型實作:這是從 .NET 10 SDK 開始新增的。

使用 .NET 10 SDK 執行 MTP 測試專案,現在需要啟用基於 MTP 的 dotnet test,而且再也不能使用基於 VSTest 的實作,此實作先前是由 MTP v1 中的 TestingPlatformDotnetTestSupport MSBuild 屬性啟用的。

若要選擇加入 MTP 型實作,請在存放庫或解決方案根目錄中建立 global.json (或更新現有 global.json,如果您已有的話),將測試執行器設定為 Microsoft.Testing.Platform,如下列範例所示:

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

嘗試使用 MTP v2 執行 VSTest 型 dotnet test 將產生下列錯誤:

在 .NET 10 SDK 及之後版本中,MTP 已不再支援使用 VSTest 目標進行測試。 如果您使用 dotnet test,您應該選擇加入新的 dotnet test 體驗。 如需詳細資訊,請參閱 https://aka.ms/dotnet-test-mtp-error

重新命名命令列選項

  • --diagnostic-output-fileprefix命令列選項已重新命名為 --diagnostic-file-prefix。
  • --diagnostic-filelogger-synchronouswrite命令列選項已重新命名為 --diagnostic-synchronous-write。