Microsoft. Testing.Platform (MTP) hibaelhárítása

Ez a cikk az MTP hibaelhárítási útmutatóját tartalmazza.

Kilépési kódok

Az MTP ismert kilépési kódokat használ a tesztelési hibák vagy alkalmazáshibák közlésére. A kilépési kódok 0-nél kezdődnek, és nem negatívak.

Kilépési kód Részletek
0 A 0 kilépési kód a sikerességet jelzi. Az összes futtatásra kiválasztott teszt befejeződött, és nem történt hiba.
1 A 1 kilépési kód ismeretlen hibákat jelez, és egyfajta általános gyűjtőként működik. További hibainformációkat és részleteket a kimenetben talál.
2 A rendszer egy kilépési 2 kóddal jelzi, hogy legalább egy teszthiba történt.
3 A kilépési kód 3 azt jelzi, hogy a tesztmunkamenet megszakadt. A munkamenetek például a CtrlC+ megszakíthatók.
4 A kilépési kód 4 azt jelzi, hogy a használt bővítmények beállítása érvénytelen, és a tesztmunkamenet nem futtatható.
5 A kilépési kód 5 azt jelzi, hogy a tesztalkalmazásnak átadott parancssori argumentumok érvénytelenek voltak.
6 (már nincs használatban) A kilépési kódot 6 a platform már nem hozza létre; korábban azt jelezte, hogy a tesztmunkamenet nem implementált funkciót használ.
7 A kilépési kód 7 azt jelzi, hogy a tesztelési munkamenet nem sikerült, és valószínűleg összeomlott. Lehetséges, hogy ezt egy tesztvezérlő bővítményén keresztül futtatott tesztmunkamenet okozta.
8 A kilépési kód 8 azt jelzi, hogy a teszt munkamenete nulla tesztet futtatott.
9 A kilépési kód 9 azt jelzi, hogy a végrehajtott tesztek minimális végrehajtási szabályzata megsértődött.
10 A kilépési kód 10 azt jelzi, hogy a tesztadapter, a Testing.Platform Test Framework, az MSTest, az NUnit vagy az xUnit nem futtatott teszteket olyan infrastruktúra-okból, amely nem kapcsolódik a teszt sajátjához. Ilyen például, ha nem sikerül létrehozni a tesztekhez szükséges szerelvényt.
11 A kilépési kód 11 azt jelzi, hogy a tesztfolyamat kilép, ha a függő folyamat kilép.
12 A kilépési kód 12 azt jelzi, hogy a tesztmunkamenet nem futott, mert az ügyfél nem támogatja a támogatott protokollverziókat.
13 A kilépési kód 13 azt jelzi, hogy a teszt munkamenete leállt, mert elérte a megadott számú sikertelen tesztet a parancssori beállítással --maximum-failed-tests . További információkért tekintse meg az MTP parancssori felületének Beállítások szakaszát

A részletes naplózás engedélyezéséhez és a problémák elhárításához tekintse meg a diagnosztikai naplózást.

Adott kilépési kódok figyelmen kívül hagyása

Az MTP alapértelmezés szerint szigorú, de konfigurálhatóságot tesz lehetővé. Így a felhasználók eldönthetik, hogy mely kilépési kódokat kell figyelmen kívül hagyni (a kilépési kód az eredeti kilépési 0 kód helyett lesz visszaadva).

Adott kilépési kódok figyelmen kívül hagyásához használja a --ignore-exit-code parancssori beállítást vagy a környezeti változót TESTINGPLATFORM_EXITCODE_IGNORE . Az elfogadott érvényes formátum a figyelmen kívül hagyandó kilépési kódok pontosvesszővel elválasztott listája (például --ignore-exit-code 2;3;8). Gyakori forgatókönyv az, hogy a tesztelési hibák nem eredményezhetnek nem nulla kilépési kódot (ami a kilépési kód 2 figyelmen kívül hagyásának felel meg).

Diagnosztikai naplózás

A platform beépített diagnosztikai naplózást biztosít a tesztvégrehajtás hibaelhárításához. A diagnosztikai naplózást parancssori beállításokkal vagy környezeti változókkal engedélyezheti.

Parancssori beállítások

A következő platformbeállítások hasznos információkat nyújtanak a tesztalkalmazások hibaelhárításához:

  • --info
  • --diagnostic
  • --diagnostic-synchronous-write
  • --diagnostic-verbosity
  • --diagnostic-file-prefix
  • --diagnostic-output-directory

Környezeti változók

A diagnosztikai naplókat a környezeti változók használatával is engedélyezheti:

Környezeti változó neve Description
TESTINGPLATFORM_DIAGNOSTIC Ha 1értékre van állítva, engedélyezi a diagnosztikai naplózást.
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY Meghatározza a részletességi szintet. Az elérhető értékek a következők: Trace, Debug, Information, Warning, Errorvagy Critical.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY A 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.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX A naplófájl nevének előtagja. Alapértelmezett érték: "log_".
TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE A 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.

Megjegyzés:

A környezeti változók elsőbbséget élveznek a parancssori argumentumokkal szemben.

Konfigurációs hibák elhárítása

Microsoft.Testing.Platform.MSBuild

Az alábbiakban a Microsoft.Testing.Platform.MSBuild szolgáltatással kapcsolatos gyakori konfigurációs hibák szerepelnek.

CS8892 hiba: A "TestingPlatformEntryPoint.Main(string[])" metódus nem használható belépési pontként, mert a program.Main(sztring[])" szinkron belépési pont található

Egy tesztprojekt belépési pontjának (Main) manuális definiálása vagy tesztprojektre való hivatkozás egy olyan alkalmazásból, amely már rendelkezik belépési ponttal, ütközést eredményez az MTP által létrehozott belépési ponttal. A probléma elkerülése érdekében hajtsa végre az alábbi lépések egyikét:

  • Távolítsa el a manuálisan megadott belépési pontot, amely általában a Main metódus a Program.csfájlban, és hagyja, hogy a tesztelési platform hozzon létre Önnek egyet.

  • Tiltsa le a belépési pont létrehozását az <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint> MSBuild tulajdonság beállításával.

  • A tesztprojektre hivatkozó projekt Microsoft.Testing.Platform.MSBuild MSBuild tulajdonságának beállításával teljesen tiltsa le a <IsTestingPlatformApplication>false</IsTestingPlatformApplication> tranzitív függőséget. Erre akkor van szükség, ha nem tesztprojektből származó tesztprojektre hivatkozik, például egy tesztalkalmazásra hivatkozó konzolalkalmazásra.

Microsoft.Testing.Extensions.Fakes

Hamis hiba: Nem sikerült feloldani a profiler elérési útját COR_PROFILER_PATH és COR_PROFILER környezeti változókból

Ez a hiba akkor fordulhat elő, ha nem minden Fakes összetevő található a bin mappában.

  • Győződjön meg arról, hogy a projekt használja az MSTest.SDK-t , vagy hivatkozik a Microsoft.Testing.Extensions.Fakes-re .
  • .NET-keretrendszerprojektek esetében kerülje a <PlatformTarget>AnyCPU</PlatformTarget> beállítását, mivel ez azt eredményezi, hogy a NuGet nem másolja az összes fájlt a tárolómappába.

Ismeretlen parancssori lehetőség vegyes tesztelési keretrendszerekkel vagy bővítményekkel rendelkező megoldásokban

Ha a megoldás különböző tesztelési keretrendszereket (például MSTestet és xUnit.net) használó projekteket vagy különböző bővítménykészleteket (például csak néhány projekt hivatkozik Microsoft.Testing.Extensions.HangDump), a dotnet test keretrendszer-specifikus vagy bővítményspecifikus parancssori kapcsolóval történő futtatása az 5. kilépési kóddal meghiúsulhat. A beállítás érvényes az egyik projektre, de a másik nem ismeri fel.

A probléma megoldásához használja az TestingPlatformCommandLineArguments MSBuild tulajdonságot feltételekkel az argumentumok megfelelő projektekhez való átirányításához. Részletes útmutatásért lásd a vegyes tesztelési keretrendszereket vagy bővítményeket tartalmazó megoldásokat.