Testen der Hostbereitstellung

Diese Erweiterungen steuern, wie und wo MTP den Testhost bereitstellt und startet. Sie verwenden den experimentellen ITestHostLauncher Erweiterungspunkt, um die Testhostbereitstellung und den Start zu steuern.

Tipp

Wenn Sie Microsoft.Testing.Platform.MSBuild verwenden, installieren Sie das NuGet-Paket einer Erweiterung, um die Erweiterung automatisch zu registrieren. MSTest-, NUnit- und xUnit-Runner schließen Microsoft.Testing.Platform.MSBuild transitiv ein. Wenn Sie den generierten Einstiegspunkt deaktivieren, rufen Sie AddSelfRegisteredExtensions auf, um die Pakete zu registrieren, die MSBuild beiträgt.

Bereitstellung verpackter Apps

Die Erweiterung Microsoft.Testing.Extensions.PackagedApp registriert einen verpackten Windows-Testhost aus seinem Buildausgabe-Layout und aktiviert ihn über die Application User Model ID (AUMID).

Das Paket wurde in MTP 2.3 eingeführt. Ab MTP 2.5 werden paketierte Full-Trust-Hosts und AppContainer-Hosts durchgängig unterstützt, einschließlich:

  • Paketierte Full-Trust-WinUI 3-Apps.
  • Moderne UWP-Apps, die UseUwp verwenden.
  • Klassische UWP-Apps, die auf uap10.0 abzielen.
  • WinUI 3-Hosts, für die TrustLevel="appContainer" festgelegt ist packagedClassicApp.

MSTest.Sdk 4.5 oder höher konfiguriert diese Erweiterung und das erforderliche voll vertrauenswürdige App-Modell-Sidecar automatisch. Informationen zum Einrichten und Ausführen von Anwendungen finden Sie unter Testen von UWP- und WinUI 3-Apps mit MSTest und MTP.

Caution

Ab Version 2.4 von MTP richtet sich Microsoft.Testing.Extensions.PackagedApp nach der MTP-Release-Version, und seine öffentliche Registrierungs-API gilt nicht mehr als experimentell. Die generische ITestHostLauncher Erweiterungsstelle ist weiterhin experimentell und könnte sich in einer zukünftigen Version ändern.

Erfüllen der Anforderungen

Erfüllen Sie diese Anforderungen, bevor Sie die Erweiterung verwenden:

  • Windows-Zielplattformversion 10.0.19041.0 oder höher für eine gepackte WinUI 3-App festlegen.
  • Um ein nicht signiertes Build-Ausgabelayout zu registrieren, aktivieren Sie den Entwicklermodus oder konfigurieren Sie Sideloading.
  • Verwenden Sie für UWP das Desktop-MSBuild aus Visual Studio mit dem UWP-Workload und dem erforderlichen Windows SDK.
  • Starten Sie AppContainer-Testhosts über einen Controllerprozess ohne erhöhte Rechte.

Grundlegendes zur Paketaktivierung

Für eine verpackte App der Launcher:

  1. Ermittelt die AppxManifest.xml, die das Testprogramm beschreibt.
  2. Registriert das Layout der Buildausgabe für den aktuellen Benutzer.
  3. Löst die AUMID der ausgewählten Manifestanwendung auf.
  4. Aktiviert die Anwendung und verbindet sie mit dem MTP-Controller.

Für packagedClassicApp- und win32App-Hosts stellt Windows MTP-Argumente über das normale Array von Prozessargumenten bereit. Dieses Verhalten gilt auch für ein packagedClassicApp, das AppContainer verwendet.

Für eine UWP windowsApp stellt Windows über LaunchActivatedEventArgs.Arguments eine opake Aktivierungszeichenfolge bereit. Rufen Sie in OnLaunchedPackagedAppExtensions.GetTestApplicationArguments auf, bevor Sie den MTP-Builder erstellen.

Verbinden eines AppContainer-Hosts

Ein AppContainer-Token enthält eine eingeschränkte Paket-SID. Eine benannte Pipeline, die nur den aktuellen Benutzer zulässt, lehnt den AppContainer-Prozess selbst dann ab, wenn er zu demselben angemeldeten Benutzer gehört.

In MTP 2.5 oder höher leitet das Paket-App-Startfeld die genaue Paket-SID der ausgewählten Anwendung ab und fordert MTP auf, dieser SID die mindesten Clientrechte auf dem Controller und Erweiterungsrohren zu gewähren. Die Erweiterung gewährt ALL APPLICATION PACKAGES nicht, verringert weder die Integritätsebene der Pipe noch erfordert sie eine Netzwerk-Loopbackausnahme.

Das Sidecar überträgt Controllermetadaten über das Paket LocalState. Es kopiert außerdem TRX-, Dump-, Diagnose- und Wiederholungsartefakte aus dem paketeigenen Speicher in das angeforderte Ergebnisverzeichnis, nachdem der in der Sandbox ausgeführte Host beendet wurde.

Steuern der automatischen Aktivierung

Standardmäßig aktiviert sich das Startprogramm nur, wenn es ein Paketmanifest findet, das die Testanwendung beschreibt. Eine nicht paketierte WinUI 3-App oder eine gewöhnliche Konsolentest-App bleibt im Direktstartpfad.

Wird TESTINGPLATFORM_PACKAGEDAPP_LAUNCHER verwendet, um die Paketerkennung außer Kraft zu setzen:

Wert Behavior
auto oder nicht festgelegt Nur für ein paketiertes Layout aktivieren.
always Aktivieren Sie für jedes Layout, einschließlich eines losen Layouts, das Sie vor dem Start bereitstellen möchten.
never Deaktivieren Sie den Starter für paketierte Apps.

Verwenden Sie TESTINGPLATFORM_PACKAGEDAPP_PIPEAUTHORIZATION, um die Autorisierung der Paket-SID außer Kraft zu setzen:

Wert Behavior
auto oder nicht festgelegt Autorisieren Sie die Paket-SID nur, wenn das Manifest eine AppContainer-Anwendung deklariert.
always Paket-SID-Autorisierung für jedes paketierte Layout anfordern.
never Behalten Sie die Pipe-Autorisierung nur für den aktuellen Benutzer bei.

Manuelles Registrieren der Erweiterung

Wenn Sie keine automatische MSBuild-Registrierung verwenden, registrieren Sie die Erweiterung in Ihrem MTP-Generator:

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

Rufen Sie nicht auf AddPackagedAppDeployment , wenn die Anwendung bereits aufruft AddSelfRegisteredExtensions und auf das Paket verweist. Eine MTP-Ausführung kann nur einen Testhost-Launcher registrieren.