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.
A Microsoft.Testing.Platform egy egyszerű és hordozható alternatíva a VSTest a tesztek minden környezetben való futtatásához, beleértve a folyamatos integrációs (CI) folyamatokat, a parancssori felületet, a Visual Studio Test Explorert és a VS Code Test Explorert. A Microsoft.Testing.Platform közvetlenül a tesztprojektekbe van beágyazva, és nincsenek más alkalmazásfüggőségek, például vstest.console vagy dotnet test a tesztek futtatásához.
Microsoft.Testing.Platform nyílt forráskódú.
Microsoft.Testing.Platform kódot microsoft/testfx GitHub-adattárban találja.
Microsoft.Testing.Platform alapelvek
Ez az új tesztelési platform a .NET fejlesztői élménytesztelési csapat tapasztalataira épül, és a .NET Core 2016-os kiadása óta felmerülő kihívások kezelésére törekszik. Bár a .NET-keretrendszer és a .NET Core/.NET között magas szintű kompatibilitás áll fenn, néhány kulcsfontosságú funkció, például a beépülő modulrendszer és a .NET-fordítások új lehetséges formai tényezői bonyolulttá tették az új futtatókörnyezeti funkciót a jelenlegi VSTest platform architektúrával.
Az új tesztplatform fejlődésének fő hajtó tényezőit az alábbiakban találja:
Determinizmus: Annak biztosítása, hogy ugyanazokat a teszteket különböző környezetekben (helyi, CI) futtassa, ugyanazt az eredményt fogja eredményezni. Az új futtatókörnyezet nem támaszkodik tükröződésre vagy bármely más dinamikus .NET-futtatókörnyezeti funkcióra a tesztfuttatás koordinálásához.
futtatókörnyezet átláthatósága: A tesztkörnyezet nem zavarja a teszt-keretrendszer kódját, nem hoz létre izolált környezeteket, például
AppDomainvagyAssemblyLoadContext, és nem használ tükrözési vagy egyéni szerelvény-feloldókat.bővítmények fordítási idejének regisztrálása: A bővítményeket, például a tesztelési keretrendszereket és a folyamaton kívüli bővítményeket a fordítási idő alatt regisztrálják a determinizmus biztosítása és az inkonzisztenciák észlelésének megkönnyítése érdekében.
Nulla függőségek: A platform magja egyetlen .NET-szerelvény,
Microsoft.Testing.Platform.dll, amely a támogatott futtatókörnyezeteken kívül nem rendelkezik függőségekkel.Üzemeltethető: A teszt futási ideje bármely .NET-alkalmazásban üzemeltethető. Bár a konzolalkalmazásokat gyakran használják tesztek futtatására, a tesztalkalmazásokat bármilyen .NET-alkalmazásban létrehozhatja. Ez lehetővé teszi a tesztek futtatását olyan speciális környezetekben, például eszközökön vagy böngészőkben, ahol korlátozások lehetnek.
Az összes .NET-űrlaptényező támogatása: Az aktuális és a jövőbeli .NET-űrlaptényezők támogatása, beleértve a natív AOT-t is.
Performant: A funkciók és a bővítménypontok közötti megfelelő egyensúly megtalálása a futtatókörnyezet nem alapvető kóddal való blobolásának elkerülése érdekében. Az új tesztplatform úgy lett kialakítva, hogy "vezényelje" a tesztfuttatást, ahelyett, hogy implementációval kapcsolatos részleteket szolgáltatna.
Bővíthető elég: Az új platform bővíthetőségi pontokra épül, így lehetővé teszi a futtatókörnyezet végrehajtásának maximális testreszabását. Lehetővé teszi a tesztfolyamat-gazdagép konfigurálását, a tesztelési folyamat megfigyelését és a tesztelési keretrendszerből származó információk felhasználását a tesztgazdafolyamaton belül.
egymodulos üzembe helyezési: Az üzemeltethetőségi funkció egyetlen modul üzembehelyezési modelljét teszi lehetővé, ahol egyetlen fordítási eredmény használható az összes bővíthetőségi pont támogatására, mind a folyamaton kívül, mind a folyamatban, anélkül, hogy különböző végrehajtható modulokat kellene szállítania.
Támogatott tesztelési keretrendszerek
- MSTest. MSTestben a
Microsoft.Testing.Platformtámogatását a MSTest futóbiztosítja. - NUnit. A
Microsoft.Testing.Platformtámogatása a NUnit tesztfutókeresztül történik az NUnitban. - xUnit.net: Az xUnit.net-ben a
Microsoft.Testing.Platformtámogatása a xUnit.net futósegítségével történik. - TUnit: teljes egészében a
Microsoft.Testing.Platformfölé épül, további információkért lásd TUnit dokumentációját.
Tesztek futtatása és hibakeresése
Microsoft.Testing.Platform tesztprojektek olyan futtatható fájlokként készülnek, amelyeket közvetlenül el lehet indítani, vagy hibakeresés céljából futtathatók. Nincs extra tesztfuttató konzol vagy parancs. Ha hiba történik, az alkalmazás nem aero kilépési kóddal lép ki, ami a legtöbb végrehajtható fájlra jellemző. További információ az ismert kilépési kódokról: Microsoft.Testing.Platform kilépési kódok.
Tipp
A parancssori beállítással figyelmen kívül hagyhat egy adott --ignore-exit-code.
A projektfájlban egy adott tesztprojektre vonatkozó parancssori beállításokat is megadhat a TestingPlatformCommandLineArguments MSBuild tulajdonság használatával. Az egyik gyakori használati eset az olyan tesztprojektek esetében, amelyek minden tesztet figyelmen kívül hagynak, és amelyek általában a 8- es kilépési kóddal lépnek ki (a tesztmunkamenet nulla tesztet futtatott). Ebben a forgatókönyvben a projektfájlban a PropertyGroup alá az alábbiak kerülhetnek hozzáadásra:
<TestingPlatformCommandLineArguments>$(TestingPlatformCommandLineArguments) --ignore-exit-code 8</TestingPlatformCommandLineArguments>
Fontos
Alapértelmezés szerint Microsoft.Testing.Platform telemetriát gyűjt. További információkért és lehetőségekért a leiratkozással kapcsolatban tekintse meg a Microsoft.Testing.Platform telemetriát.
A tesztprojekt közzététele dotnet publish és az alkalmazás közvetlen futtatása egy másik módszer a tesztek futtatására. Például a ./Contoso.MyTests.exe végrehajtása. Bizonyos esetekben a végrehajtható fájl létrehozásához dotnet build is használható, de vannak olyan szélsőséges esetek is, amelyeket érdemes megfontolni, például a natív AOT.
Használja a dotnet run-t
A dotnet run parancs használható a tesztprojekt létrehozásához és futtatásához. Ez a legegyszerűbb, bár néha leglassabb módszer a tesztek futtatására. A dotnet run használata gyakorlatias, ha helyileg szerkeszti és futtatja a teszteket, mivel biztosítja, hogy a tesztprojekt szükség esetén újraépüljön.
dotnet run automatikusan megkeresi a projektet az aktuális mappában.
dotnet run --project Contoso.MyTests
A dotnet run-ról további információért lásd: dotnet run.
Használja a dotnet exec-t
A dotnet exec vagy dotnet parancs egy már létrehozott tesztprojekt végrehajtására (vagy futtatására) szolgál, ez alternatíva az alkalmazás közvetlen futtatására.
dotnet exec a beépített tesztprojekt dll-jének elérési útját igényli.
dotnet exec Contoso.MyTests.dll
vagy
dotnet Contoso.MyTests.dll
Megjegyzés
A végrehajtható tesztprojekt elérési útjának (*.exe) megadása hibát eredményez:
Error:
An assembly specified in the application dependencies manifest
(Contoso.MyTests.deps.json) has already been found but with a different
file extension:
package: 'Contoso.MyTests', version: '1.0.0'
path: 'Contoso.MyTests.dll'
previously found assembly: 'S:\t\Contoso.MyTests\bin\Debug\net8.0\Contoso.MyTests.exe'
További információ a dotnet exec-ról: lásd dotnet exec.
Használja a dotnet test-t
Microsoft.Testing.Platform egy kompatibilitási réteget kínál a vstest.console.exe-gyel és dotnet test-vel, biztosítva, hogy a teszteket a megszokott módon futtathassa, miközben új végrehajtási forgatókönyveket is lehetővé tesz.
dotnet test Contoso.MyTests.dll
Beállítások
Az alábbi lista csak a platformbeállításokat ismertette. Az egyes bővítmények által megadott beállítások megtekintéséhez tekintse meg a bővítmény dokumentációjának lapját, vagy használja a --help lehetőséget.
@Megadja a válaszfájl nevét. A válaszfájl nevének azonnal követnie kell a @ karaktert, és nincs szóköz a @ karakter és a válaszfájl neve között.
A válaszfájl beállításai úgy vannak értelmezve, mintha a parancssor ezen a helyén lennének. A válaszfájl minden argumentumának ugyanabban a sorban kell kezdődnie és végződnie. A fordított perjel karakter () nem használható vonalak összefűzésére. A válaszfájl használata nagyon hosszú parancsok esetén segít, amelyek túlléphetik a terminálkorlátokat. A válaszfájlokat beágyazott parancssori argumentumokkal kombinálhatja. Például:
./TestExecutable.exe @"filter.rsp" --timeout 10sahol filter.rsp a következő tartalommal rendelkezhet:
--filter "A very long filter"Vagy egyetlen rsp-fájl is használható az időtúllépés és a szűrés megadásához az alábbiak szerint:
./TestExecutable.exe @"arguments.rsp"--filter "A very long filter" --timeout 10s--config-fileEgy testconfig.json fájlt ad meg.
--diagnosticEngedélyezi a diagnosztikai naplózást. Az alapértelmezett naplószint a(z)
Trace. A fájl a kimeneti könyvtárban van megírva a következő névformátummal,log_[MMddHHssfff].diag.--diagnostic-filelogger-synchronouswriteA beépített fájlnaplózót kényszeríti a naplók szinkronizálására. Olyan helyzetekben hasznos, amikor nem szeretné elveszíteni a naplóbejegyzéseket (ha a folyamat összeomlik). Ez lelassítja a teszt végrehajtását.
--diagnostic-output-directoryA diagnosztikai naplózás kimeneti könyvtára, ha nincs megadva, a fájl az alapértelmezett TestResults könyvtárban jön létre.
--diagnostic-output-fileprefixA naplófájl nevének előtagja. Alapértelmezett érték:
"log_".--diagnostic-verbosityMeghatározza a bőbeszédűség szintjét, amikor a
--diagnostickapcsoló használatban van. Az elérhető értékek a következők:Trace,Debug,Information,Warning,ErrorvagyCritical.--exit-on-process-exitHa a függő folyamat kilép, lépjen ki a tesztelési folyamatból. A PID-t meg kell adni.
--helpA parancs használatának leírását nyomtatja ki.
--ignore-exit-codeLehetővé teszi, hogy néhány nem nulla kilépési kód figyelmen kívül hagyható legyen, és ehelyett
0visszaadva. További információ: Adott kilépési kódok figyelmen kívül hagyása.--infoSpeciális információkat jelenít meg a .NET-tesztalkalmazásról, például:
- A platform.
- A környezet.
- Minden regisztrált parancssori szolgáltató, például a
name,version,descriptionésoptions. - Minden regisztrált eszköz, például a
command,name,version,description, és minden parancssori szolgáltató.
Ezzel a funkcióval megismerheti azokat a bővítményeket, amelyek ugyanazt a parancssori beállítást regisztrálnák, vagy a bővítmény (vagy a platform) több verziója között elérhető lehetőségek változásait.
--list-testsAz elérhető tesztek listája. A tesztek nem lesznek végrehajtva.
--maximum-failed-testsMeghatározza a maximális teszthibák számát, amely elérésekor a tesztfuttatás leáll. Ennek a kapcsolónak a támogatásához a keretrendszer-szerzőknek implementálniuk kell a
IGracefulStopTestExecutionCapabilityképességet. A teszthibák mennyiségének elérésekor a kilépési kód 13. További információ: Microsoft.Testing.Platform kilépési kódok.Megjegyzés
Ez a funkció a Microsoft.Testing.Platform 1.5-ös verziójától kezdve érhető el.
--minimum-expected-testsMeghatározza a várhatóan futtatandó tesztek minimális számát. Alapértelmezés szerint legalább egy teszt futtatása várható.
--results-directoryA könyvtár, ahova a teszteredményeket el fogják helyezni. Ha a megadott könyvtár nem létezik, az létrehozásra kerül. Az alapértelmezett
TestResultsa tesztalkalmazást tartalmazó könyvtárban.--timeoutA globális teszt végrehajtásának időtúllépése. Egy argumentumot sztringként használ a
<value>[h|m|s]formátumban, ahol a<value>egy lebegőpontos szám.
MSBuild-integráció
A NuGet-csomag Microsoft.Testing.Platform.MSBuild különböző integrációkat biztosít az MSBuild Microsoft.Testing.Platform számára:
- A
dotnet testtámogatása. További információ: Tesztelés dotnet-teszttel. - Támogatás a
ProjectCapabilityszámára, amelyet aVisual StudioésVisual Studio CodeTesztböngészők igényelnek. - A belépési pont automatikus létrehozása (
Mainmetódus). - A konfigurációs fájl automatikus létrehozása.
Megjegyzés
Ez az integráció tranzitív módon működik (a csomagra hivatkozó másik projektre hivatkozó projekt úgy fog viselkedni, mintha a csomagra hivatkozik), és letiltható a IsTestingPlatformApplication MSBuild tulajdonságon keresztül.