Testowanie wdrożenia hosta

Te rozszerzenia kontrolują sposób i miejsce wdrażania protokołu MTP i uruchamiania hosta testowego. Używają eksperymentalnego ITestHostLauncher punktu rozszerzenia do kontrolowania wdrażania i uruchamiania hosta testowego.

Wskazówka

W przypadku korzystania z Microsoft. Testing.Platform.MSBuild zainstaluj pakiet NuGet rozszerzenia, aby automatycznie zarejestrować rozszerzenie. Programy uruchamiające MSTest, NUnit i xUnit zawierają Microsoft.Testing.Platform.MSBuild przechodnio. Jeśli wyłączysz wygenerowany punkt wejścia, wywołaj metodę AddSelfRegisteredExtensions , aby zarejestrować pakiety współtworzene przez program MSBuild.

Wdrażanie spakowanych aplikacji

Rozszerzenie Microsoft.Testing.Extensions.PackagedApp rejestruje hosta testowego aplikacji pakietowanej systemu Windows na podstawie układu danych wyjściowych kompilacji i aktywuje go za pomocą identyfikatora modelu użytkownika aplikacji (AUMID).

Pakiet został wprowadzony w MTP 2.3. Od wersji MTP 2.5 obsługiwane są kompleksowo hosty full-trust w pakietach oraz hosty AppContainer, w tym:

  • Spakietowane aplikacje WinUI 3 o pełnym zaufaniu.
  • Nowoczesne aplikacje UWP korzystające z UseUwp.
  • Klasyczne aplikacje UWP przeznaczone dla uap10.0.
  • Hosty WinUI 3 packagedClassicApp , które ustawiają wartość TrustLevel="appContainer".

MSTest.Sdk 4.5 lub nowszy automatycznie konfiguruje to rozszerzenie oraz wymagany pomocniczy komponent modelu aplikacji o pełnym zaufaniu. Aby uzyskać informacje o konfigurowaniu i uruchamianiu poleceń aplikacji, zobacz Testowanie aplikacji platformy UWP i WinUI 3 za pomocą bibliotek MSTest i MTP.

Caution

Od wersji MTP 2.4 Microsoft.Testing.Extensions.PackagedApp jest zgodny z wersją wydania MTP, a jego publiczny interfejs API do rejestracji nie ma już statusu eksperymentalnego. ITestHostLauncher Ogólny punkt rozszerzenia pozostaje eksperymentalny i może ulec zmianie w przyszłej wersji.

Spełnianie wymagań

Przed użyciem rozszerzenia spełnij następujące wymagania:

  • Docelowa wersja 10.0.19041.0 platformy Windows lub nowsza dla spakowanej aplikacji WinUI 3.
  • Aby zarejestrować niepodpisany układ wyjściowy kompilacji, włącz Tryb dewelopera lub skonfiguruj ładowanie boczne.
  • W przypadku platformy UWP użyj desktopowego programu MSBuild z programu Visual Studio z obciążeniem UWP i wymaganym pakietem Windows SDK.
  • Uruchom hosty testowe AppContainer z procesu sterującego bez podwyższonych uprawnień.

Omówienie aktywacji pakietu

W przypadku spakowanej aplikacji program uruchamiający:

  1. Lokalizuje element AppxManifest.xml, który opisuje plik wykonywalny testu.
  2. Rejestruje układ danych wyjściowych kompilacji dla bieżącego użytkownika.
  3. Określa identyfikator AUMID wybranej aplikacji manifestu.
  4. Aktywuje aplikację i łączy ją z kontrolerem MTP.

W przypadku hostów packagedClassicApp i win32App system Windows przekazuje argumenty MTP za pośrednictwem standardowej tablicy argumentów procesu. To zachowanie dotyczy również obiektu korzystającego packagedClassicApp z aplikacji AppContainer.

W przypadku aplikacji UWP windowsApp, system Windows dostarcza jeden nieprzezroczysty ciąg aktywacyjny przez LaunchActivatedEventArgs.Arguments. W pliku OnLaunched wywołaj PackagedAppExtensions.GetTestApplicationArguments przed utworzeniem obiektu buildera MTP.

Połącz hosta AppContainer

Token AppContainer zawiera identyfikator SID ograniczonego pakietu. Potok nazwany, który zezwala wyłącznie obecnie zalogowanemu użytkownikowi, odrzuca proces AppContainer nawet wtedy, gdy należy on do tego samego zalogowanego użytkownika.

W systemie MTP 2.5 lub nowszym moduł uruchamiania spakowanej aplikacji uzyskuje dokładny identyfikator SID pakietu wybranej aplikacji i prosi MTP o przyznanie temu identyfikatorowi SID minimalnych praw klienta w potokach kontrolera i rozszerzenia. Rozszerzenie nie przyznaje ALL APPLICATION PACKAGES, nie obniża poziomu integralności potoku ani nie wymaga wyjątku pętli zwrotnej sieci.

Przyczepka przesyła metadane kontrolera za pośrednictwem pakietu LocalState. Kopiuje również trX, zrzut, diagnostykę i ponawianie artefaktów z magazynu należącego do pakietu do żądanego katalogu wyników po zakończeniu działania hosta w trybie piaskownicy.

Kontrolowanie automatycznej aktywacji

Domyślnie uruchamianie włącza się tylko wtedy, gdy znajdzie manifest pakietu opisujący aplikację testową. Aplikacja WinUI 3 bez pakietu lub zwykła testowa aplikacja konsolowa nadal jest uruchamiana bezpośrednio.

Użyj TESTINGPLATFORM_PACKAGEDAPP_LAUNCHER, aby zastąpić wykrywanie pakietów:

Value Behavior
auto lub nieustawiony Włączaj tylko dla spakietowanego układu.
always Włącz dla dowolnego układu, w tym luźnego układu, który chcesz wdrożyć przed uruchomieniem.
never Wyłącz spakowany moduł uruchamiania aplikacji.

Użyj TESTINGPLATFORM_PACKAGEDAPP_PIPEAUTHORIZATION, aby zastąpić autoryzację identyfikatorem SID pakietu:

Value Behavior
auto lub nieustawiony Autoryzuj identyfikator SID pakietu tylko wtedy, gdy manifest deklaruje aplikację AppContainer.
always Wystąp o autoryzację package-SID dla dowolnego spakietowanego układu.
never Zachowaj autoryzację potoku tylko dla bieżącego użytkownika.

Ręczne rejestrowanie rozszerzenia

Jeśli nie używasz automatycznej rejestracji programu MSBuild, zarejestruj rozszerzenie w konstruktorze MTP:

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

Nie wywołuj AddPackagedAppDeployment, jeśli aplikacja już wywołuje AddSelfRegisteredExtensions i odwołuje się do pakietu. Uruchomienie MTP może zarejestrować tylko jeden program uruchamiający host testowy.