Kiszolgáló mód

Az MTP-kiszolgáló mód lehetővé teszi, hogy egy szerkesztő, IDE vagy más teszteszköz elindítson egy tesztalkalmazást, és a JSON-RPC-n keresztül vezesse a felderítést és a végrehajtást. Kiszolgáló mód használata az MTP körüli eszközépítéshez. Normál parancssori és CI-futtatások esetén futtassa közvetlenül a tesztalkalmazást, vagy használja dotnet test.

Indítsa el a nyilvános JSON-RPC-kiszolgálót a --server jsonrpc vagy --server használatával.

Important

A .NET SDK egy külön belső bináris protokollt használ.--server dotnettestcli Ne adja át ezt az értéket. dotnet test konfigurálja az átviteli és protokollargumentumokat.

Csak forrásként használt ügyfélprogram használata

Az MTP 2.4 előzetes verziója egy canonical JSON-RPC-ügyfelet biztosít. Adja hozzá a Microsoft. Testing.Platform.ServerMode.Client.Sources csomag. A csomag futásidejű szerelvény hozzáadása helyett C#-forrást injektál a projektbe.

A csak forrásoldali kialakítás a következőket biztosítja:

  • Nincs futtatókörnyezeti DLL vagy további üzembehelyezési függőség.
  • Natív AOT-kompatibilis, tükröződésmentes szerializálás.
  • Az MTP-kiszolgálóval azonos adattárból származó protokolltípusok és szerializálási kód.

Az injektált MtpServerClient, IMtpServerClientés a protokolltípusok inicializálhatják a kapcsolatot, felderíthetik a teszteket, futtathatnak teszteket, kérhetik a kiszolgáló kilépését, és jelentést tehetnek a tesztcsomópont frissítéséről. Az összes injektált típus megmarad internal a fogyasztó szerelvényben.

Ügyfélkövetelményeknek való megfelelés

Használja a C# 12 vagy újabb verziót. A csomag akkor állítja be LangVersion , 12.0 ha a projekt nem ad meg nyelvi verziót. A .NET Framework 4.6.2 és netstandard2.0 számára belső kompatibilitási típusokat is biztosít.

A csomag hozzáadása előtt távolítsa el az MTP-ügyfél kézzel írt másolatát a duplikált belső típusok elkerülése érdekében.

Indítási modell kiválasztása

Ha külső folyamatként szeretné elindítani a tesztalkalmazást, használja MtpServerClient.LaunchAsynca következőt: . Az ügyfél birtokolja ezt a gyermekfolyamatot, és szükség esetén megszakítja azt a lebontás során.

Ha olyan beágyazott gazdagépen vagy UI-szálas környezetben dolgozik, amely nem tudja használni a Process.Start elemet, használja a MtpServerClient.LaunchInProcessAsync elemet. A metódus egy aszinkron visszahíváson keresztül futtatja a tesztalkalmazást az aktuális folyamatban. Ne blokkolja az indító szálat, mert a visszahívási függvény és a kliens ugyanabban a folyamatban fut.

Mindkét indítási modell egy visszacsatolási TCP-átvitelt használ. A böngészős WebAssembly nem tudja létrehozni a szükséges eseményfigyelőt, ezért a folyamaton belüli indítás PlatformNotSupportedException kivételt eredményez. A folyamaton belüli indítás nem biztosít alternatív WebAssembly-átvitelt.

A kliens leállítása

Az ügyfél és az elindított alkalmazás leállításához a hívó szál blokkolása nélkül hívja meg a következőt: IMtpServerClient.ShutdownAsync() Az aszinkron metódus elkerüli a felhasználói felület szálával kapcsolatos válaszkészségi és holtponti problémákat a beágyazott gazdagép-környezetekben.

Folyamaton belüli gazda esetén a MtpServerClientOptions.ServerShutdownTimeout azt szabályozza, hogy a leállítás mennyi ideig várjon azután, hogy az ügyfél lezárta a transportot. Az alapértelmezett érték 30 másodperc. A leállítás után olvassa el a ServerExitCode elemet a visszahívás kilépési kódjának lekéréséhez. Az érték megmarad null , amíg az alkalmazás fut, vagy ha az alkalmazás nem ad vissza egy kilépési kódot.

Kapcsolati viselkedés kiválasztása

Állítsa be MtpServerClientOptions.IsStateful , hogy meg tudja mondani a kiszolgálónak, hogy az ügyfél megőrzi-e az állapotot a kérések között:

  • Hagyja az értéket false egyetlen felderítési vagy végrehajtási kéréshez, majd lépjen ki.
  • Állítsa be az értéket true egy olyan szerkesztő- vagy IDE-munkamenetre, amely több kérelmet küld ugyanazon a kapcsolaton keresztül.

Az ügyfél ezt a beállítást a kísérleti capabilities.testing.isStateful protokoll képességein keresztül küldi el.

Lásd még