Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
falseegyetlen felderítési vagy végrehajtási kéréshez, majd lépjen ki. - Állítsa be az értéket
trueegy 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.