穩定版 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 簽章變更
- 已將
CancellationToken參數新增至IOutputDevice.DisplayAsync(IOutputDeviceDataProducer, IOutputDeviceData)。 - 介面中的ITestSessionLifetimeHandler方法已更改為具有
ITestSessionContext參數,而不是具有SessionUid和CancellationToken參數。 -
IDataConsumer從Microsoft.Testing.Platform.Extensions.TestHost命名空間移動至Microsoft.Testing.Platform.Extensions。
此重大變更不會影響測試架構的一般使用者。 它只會影響測試架構作者和延伸模組作者。
行為中斷性變更
這些是可能影響執行時行為的破壞性變更。
與基於 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。