Hostimplementatie testen

Deze extensies bepalen hoe en waar MTP implementeert en start de testhost. Ze gebruiken het experimentele ITestHostLauncher extensiepunt om de implementatie en het opstarten van de testhost te beheren.

Tip

Wanneer u Microsoft.Testing.Platform.MSBuild gebruikt, installeert u het NuGet-pakket van een extensie om de extensie automatisch te registreren. MSTest-, NUnit- en xUnit-runners bevatten Microsoft.Testing.Platform.MSBuild als transitieve afhankelijkheid. Als u het gegenereerde toegangspunt uitschakelt, roept AddSelfRegisteredExtensions u aan om de pakketten te registreren die MSBuild bijdraagt.

Implementatie van verpakte apps

De extensie Microsoft.Testing.Extensions.PackagedApp registreert een verpakte Windows-testhost op basis van de build-uitvoerindeling en activeert deze via de Application User Model ID (AUMID).

Het pakket is geïntroduceerd in MTP 2.3. Vanaf MTP 2.5 biedt het ondersteuning voor verpakte volledige vertrouwensrelaties en AppContainer-hosts end-to-end, waaronder:

  • Verpakte WinUI 3-apps voor volledig vertrouwen.
  • Moderne UWP-apps die gebruikmaken van UseUwp.
  • Klassieke UWP-apps die zijn gericht op uap10.0.
  • WinUI 3-hosts packagedClassicApp die TrustLevel="appContainer" instellen.

MET MSTest.Sdk 4.5 of hoger configureert u deze extensie en de vereiste volledig vertrouwde sidecar van het app-model automatisch. Zie UWP- en WinUI 3-apps testen met MSTest en MTP voor het instellen en uitvoeren van toepassingen.

Caution

Vanaf MTP 2.4 volgt Microsoft.Testing.Extensions.PackagedApp de releaseversie van MTP en is de publieke registratie-API niet langer experimenteel. Het algemene ITestHostLauncher extensiepunt blijft experimenteel en kan in een toekomstige release veranderen.

Voldoen aan de vereisten

Voldoen aan deze vereisten voordat u de extensie gebruikt:

  • Gebruik Windows-platformversie 10.0.19041.0 of hoger als doelversie voor een verpakte WinUI 3-app.
  • Als u een niet-ondertekende indeling voor build-uitvoer wilt registreren, schakelt u de ontwikkelaarsmodus in of configureert u sideloading.
  • Gebruik voor UWP desktop MSBuild van Visual Studio met de UWP-workload en de vereiste Windows SDK.
  • Voer AppContainer-testhosts uit vanaf een controllerproces zonder verhoogde bevoegdheden.

Pakketactivering begrijpen

Voor een verpakte app: de starter.

  1. Zoekt de AppxManifest.xml die het uitvoerbare testbestand beschrijft.
  2. Registreert de indeling van de build-uitvoer voor de huidige gebruiker.
  3. Bepaalt de AUMID van de geselecteerde app in het manifest.
  4. Activeert de toepassing en verbindt deze met de MTP-controller.

Voor packagedClassicApp en win32App hosts levert Windows MTP-argumenten via de matrix met normale procesargumenten. Dit gedrag is ook van toepassing op een packagedClassicApp die AppContainer gebruikt.

Voor een UWP windowsApplevert Windows één ondoorzichtige activeringsreeks viaLaunchActivatedEventArgs.Arguments. Roep in OnLaunchedPackagedAppExtensions.GetTestApplicationArguments aan voordat u de MTP-builder aanmaakt.

Een AppContainer-host verbinden

Een AppContainer-token bevat een beperkte pakket-SID. Een named pipe die alleen de huidige gebruiker autoriseert, weigert het AppContainer-proces, zelfs wanneer dit bij dezelfde aangemelde gebruiker hoort.

In MTP 2.5 of hoger leidt het startprogramma voor verpakte apps de exacte pakket-SID van de geselecteerde toepassing af en vraagt MTP om die SID de minimale clientrechten op de controller- en extensiepijpen te verlenen. De extensie verleent ALL APPLICATION PACKAGES niet, verlaagt de integriteit van de pijp niet en vereist geen vrijstelling voor netwerklusback.

De sidecar draagt metagegevens van de controller over via pakket LocalState. Ook worden TRX-, dump-, diagnostische en artefacten voor nieuwe pogingen vanuit pakketgebonden opslag naar de opgegeven resultatenmap gekopieerd nadat de host in de sandbox is beëindigd.

Automatische activering regelen

Standaard schakelt het startprogramma zichzelf alleen in wanneer er een pakketmanifest wordt gevonden waarin de testtoepassing wordt beschreven. Een niet-verpakte WinUI 3-app of gewone consoletest-app blijft op het directe opstartpad.

Gebruiken TESTINGPLATFORM_PACKAGEDAPP_LAUNCHER om pakketdetectie te overschrijven:

Value Gedrag
auto of niet instellen Alleen inschakelen voor een verpakte indeling.
always Schakel een indeling in, inclusief een losse indeling die u wilt implementeren voordat u opstart.
never Schakel het startprogramma voor verpakte apps uit.

Gebruiken TESTINGPLATFORM_PACKAGEDAPP_PIPEAUTHORIZATION om pakket-SID-autorisatie te overschrijven:

Value Gedrag
auto of niet instellen Autoriseren van de pakket-SID alleen wanneer het manifest een AppContainer-toepassing declareert.
always Vraag autorisatie voor package-SID aan voor elke verpakte lay-out.
never Behoud de autorisatie voor de pipe alleen voor de huidige gebruiker.

De extensie handmatig registreren

Als u geen automatische MSBuild-registratie gebruikt, registreert u de extensie in uw MTP Builder:

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

Roep AddPackagedAppDeployment niet aan als de toepassing AddSelfRegisteredExtensions al aanroept en naar het pakket verwijst. Een MTP-uitvoering kan slechts één startprogramma voor testhosts registreren.