測試主機部署

這些擴充控制 MTP 如何、在哪裡部署並啟動測試主機。 他們利用實驗 ITestHostLauncher 擴展點來控制測試主機的部署與啟動。

提示

當您使用 Microsoft.Testing.Platform.MSBuild 時,請安裝擴充功能的 NuGet 套件,以自動註冊該擴充功能。 MSTest、NUnit 和 xUnit 執行器包含 Microsoft.Testing.Platform.MSBuild 傳遞性。 如果你停用產生的入口點,請呼叫 AddSelfRegisteredExtensions 註冊 MSBuild 貢獻的套件。

封裝式應用程式部署

Microsoft。Testing.Extensions.PackagedApp 擴充功能會根據 Windows 的建置輸出配置註冊已打包的測試主機,並透過應用程式使用者模型 ID(AUMID)來啟用。

此套件於 MTP 2.3 中首次亮相。 從 MTP 2.5 開始,即可端對端支援已封裝的完整信任和 AppContainer 主機,包括:

  • 已封裝的全信任 WinUI 3 應用程式。
  • 使用 UseUwp 的現代 UWP 應用程式。
  • 以 uap10.0 為目標的傳統 UWP 應用程式。
  • 設定 TrustLevel="appContainer" 的 WinUI 3 packagedClassicApp 主機。

MSTest.Sdk 4.5 或更新版本自動配置此擴充功能及所需的全信任應用模型副車。 關於應用程式設定與執行指令,請參考 MSTest 和 MTP 測試 UWP 和 WinUI 3 應用程式。

注意事項

從 MTP 2.4 開始, Microsoft.Testing.Extensions.PackagedApp 遵循 MTP 版本,其公開註冊 API 已不再是實驗性質。 通用 ITestHostLauncher 擴充點仍處於實驗階段,未來版本可能會有所變動。

符合要求

在使用擴充功能前,請先符合以下要求:

  • 將目標 Windows 平台版本設為10.0.19041.0或更新版本,以用於 WinUI 3 封裝應用程式。
  • 若要註冊未簽名的建置輸出配置,請啟用開發者模式或設定側載。
  • 對於 UWP,請使用 Visual Studio 的桌面版 MSBuild,搭配 UWP 工作負載和所需的 Windows SDK。
  • 從未提升權限的控制器處理程序執行 AppContainer 測試主機。

了解套件啟動

對於打包式應用程式,啟動器:

  1. 找到描述測試執行檔的 AppxManifest.xml。
  2. 註冊目前使用者的建置輸出配置。
  3. 解析所選資訊清單應用程式的 AUMID。
  4. 啟動應用程式並將其連接到 MTP 控制器。

對於 packagedClassicApp 和 win32App hosts,Windows 透過一般的程序參數陣列提供 MTP 參數。 這種行為同樣適用於使用 AppContainer 的 App packagedClassicApp 。

對於 UWP 應用程式 windowsApp,Windows 會透過 LaunchActivatedEventArgs.Arguments 提供一個不透明的啟用字串。 在 OnLaunched建立 MTP 建構器之前先先呼叫 PackagedAppExtensions.GetTestApplicationArguments 。

連接一個 AppContainer 主機

AppContainer 權杖包含受限的封裝 SID。 僅授權當前使用者的命名管線會拒絕 AppContainer 程序,即使該程序屬於同一登入使用者。

在 MTP 2.5 或更新版本中,打包的應用程式啟動器會推導出所選應用程式的精確套件 SID,並請求 MTP 授予該 SID 對控制器與擴展管線的最小用戶端權限。 此擴充功能不會授與 ALL APPLICATION PACKAGES、降低管道的完整性等級,或要求網路迴路豁免。

側車透過套件 LocalState傳輸控制器元資料。 它也會在沙箱主機退出後,將 TRX、傾印、診斷和重試成品從套件所擁有的儲存體複製到所要求的結果目錄。

控制自動啟動

預設情況下,啟動器只有在找到描述測試應用程式的套件清單時才會自動啟用。 未封裝的 WinUI 3 應用程式或一般的控制台測試應用程式會維持在直接啟動路徑上。

使用 TESTINGPLATFORM_PACKAGEDAPP_LAUNCHER 來覆寫套件偵測:

Value 行為
auto 或未設定 僅針對封裝配置啟用。
always 可針對任何版面配置啟用,包括您想在啟動前部署的鬆散配置。
never 關閉打包的應用程式啟動器。

使用 TESTINGPLATFORM_PACKAGEDAPP_PIPEAUTHORIZATION 覆寫套件 SID 授權:

Value 行為
auto 或未設定 只有當 manifest 宣告 AppContainer 應用程式時,才授權套件 SID。
always 請求對任何封裝版面的 package-SID 授權。
never 保留目前使用者專用的管道授權。

手動註冊擴充功能

如果您未使用自動 MSBuild 註冊,請在您的 MTP 建置器中註冊該擴充功能:

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddPackagedAppDeployment();

如果應用程式已經呼叫 AddPackagedAppDeployment 並參考該套件,就不要呼叫 AddSelfRegisteredExtensions。 MTP 執行只能註冊一個測試主機啟動器。