Sdílet prostřednictvím


Řešení potíží s Microsoft.Testing.Platform

Tento článek obsahuje pokyny k řešení potíží pro Microsoft.Testing.Platform.

Ukončovací kódy

Microsoft.Testing.Platform používá známé ukončovací kódy ke komunikaci selhání testu nebo chyb aplikací. Ukončovací kódy začínají 0 a nejsou záporné.

Ukončovací kód Podrobnosti
0 Ukončovací 0 kód označuje úspěch. Všechny testy, které byly vybrány ke spuštění, proběhly až do konce, aniž by došlo k chybám.
1 Ukončovací 1 kód označuje neznámé chyby a funguje jako catch all. Další informace o chybě a podrobnosti najdete ve výstupu.
2 Ukončovací 2 kód se používá k označení, že došlo aspoň k jednomu selhání testu.
3 Ukončovací kód 3 označuje, že testovací relace byla přerušena. Relaci je možné přerušit pomocí ctrl+C jako příklad.
4 Ukončovací kód 4 označuje, že nastavení použitých rozšíření je neplatné a relace testů se nedá spustit.
5 Ukončovací kód 5 označuje, že argumenty příkazového řádku předané testovací aplikaci byly neplatné.
6 (už se nepoužívá) Ukončovací kód 6 již není vytvořen platformou; dříve uvedl, že testovací relace používala neimplementovanou funkci.
7 Ukončovací kód 7 označuje, že testovací relace se nepodařilo úspěšně dokončit a pravděpodobně došlo k chybovému ukončení. Je možné, že příčinou byla testovací relace, která byla spuštěna prostřednictvím bodu rozšíření testovacího kontroleru.
8 Ukončovací kód 8 označuje, že testovací relace spustila nulové testy.
9 Ukončovací kód 9 označuje, že došlo k porušení minimálních zásad spouštění pro spuštěné testy.
10 Ukončovací kód 10 označuje, že testovací adaptér, Test.Platform Test Framework, MSTest, NUnit nebo xUnit se nepodařilo spustit testy z důvodu infrastruktury nesouvisející s vlastním testem. Příkladem je neschopnost vytvořit přípravek potřebný pro testy.
11 Ukončovací kód 11 označuje, že testovací proces se ukončí, pokud se ukončí závislý proces.
12 Ukončovací kód 12 označuje, že testovací relace se nepovedlo spustit, protože klient nepodporuje žádnou z podporovaných verzí protokolu.
13 Ukončovací kód 13 označuje, že se testovací relace zastavila kvůli dosažení zadaného počtu maximálního počtu neúspěšných testů pomocí --maximum-failed-tests možnosti příkazového řádku. Další informace najdete v části Možnosti v referenčních informacích k rozhraní příkazového řádku Microsoft.Testing.Platform.

Pokud chcete povolit podrobné protokolování a řešit potíže, přečtěte si téma Diagnostické protokolování.

Ignorovat konkrétní ukončovací kódy

Microsoft.Testing.Platform je navržen tak, aby byl ve výchozím nastavení striktní, ale umožňuje konfigurovatelnost. Proto je možné, aby se uživatelé rozhodli, které ukončovací kódy by se měly ignorovat (místo nich se vrátí ukončovací kód 0).

Pokud chcete ignorovat konkrétní ukončovací kódy, použijte možnost příkazového --ignore-exit-code řádku nebo proměnnou TESTINGPLATFORM_EXITCODE_IGNORE prostředí. Platný formát, který je přijat, je seznam ukončovacích kódů, oddělený středníkem, které se mají ignorovat (například --ignore-exit-code 2;3;8). Běžným scénářem je vzít v úvahu, že selhání testů by neměla mít za následek nenulový ukončovací kód (který odpovídá ignorování ukončovacího kódu 2).

Protokolování diagnostiky

Platforma poskytuje integrované diagnostické protokolování, které vám pomůže řešit potíže s prováděním testů. Protokolování diagnostiky můžete povolit prostřednictvím možností příkazového řádku nebo proměnných prostředí.

Možnosti příkazového řádku

Následující možnosti platformy poskytují užitečné informace pro řešení potíží s testovacími aplikacemi:

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

Proměnné prostředí

Diagnostické protokoly můžete povolit také pomocí proměnných prostředí:

Název proměnné prostředí Description
TESTINGPLATFORM_DIAGNOSTIC Pokud je nastavená hodnota 1, povolí protokolování diagnostiky.
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY Definuje úroveň podrobností. Dostupné hodnoty jsou Trace, Debug, Information, Warning, Errornebo Critical.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY Výstupní adresář protokolování diagnostiky, pokud není zadaný, soubor se vygeneruje ve výchozím adresáři TestResults.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX Předpona názvu souboru protokolu. Výchozí hodnota je "log_".
TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE Vynutí integrovaný nástroj pro záznam souborů, aby synchronně zapisoval protokoly. Užitečné ve scénářích, kdy nechcete ztratit žádné položky protokolu (pokud se proces chybově ukončí). Tím se zpomalí spuštění testu.

Poznámka:

Proměnné prostředí mají přednost před argumenty příkazového řádku.

Řešení chyb konfigurace

Microsoft.Testing.Platform.MSBuild

Níže jsou uvedené běžné chyby konfigurace související s Microsoft.Testing.Platform.MSBuild.

Chyba CS8892: Metoda TestingPlatformEntryPoint.Main(string[]) se nepoužije jako vstupní bod, protože byl nalezen synchronní vstupní bod Program.Main(string[]).

Ruční definování vstupního bodu (Main) v testovacím projektu nebo odkazování na testovací projekt z aplikace, která již obsahuje vstupní bod, vede ke konfliktu s vstupním bodem vygenerovaným Microsoft.Testing.Platform. Pokud se chcete tomuto problému vyhnout, proveďte jeden z těchto kroků:

  • Odeberte ručně definovaný vstupní bod, obvykle metodu Main v Program.cs, a nechte testovací platformu, aby ji vygenerovala za vás.

  • Zakažte generování vstupního bodu nastavením vlastnosti <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint> MSBuild.

  • Úplně zakažte tranzitivní závislost na Microsoft.Testing.Platform.MSBuild nastavením vlastnosti <IsTestingPlatformApplication>false</IsTestingPlatformApplication> MSBuild v projektu, který odkazuje na testovací projekt. To je potřeba, když odkazujete na testovací projekt z netestového projektu, například konzolové aplikace, která odkazuje na testovací aplikaci.

Microsoft.Testing.Extensions.Fakes

Chyba Fakes: Nepodařilo se určit cestu profileru z proměnných prostředí COR_PROFILER_PATH a COR_PROFILER

K této chybě může dojít, pokud nejsou ve složce bin přítomna všechna sestavení Fakes.

  • Ujistěte se, že projekt používá MSTest.SDK nebo odkazuje Microsoft.Testing.Extensions.Fakes.
  • U projektů .NET Framework nepoužívejte nastavení <PlatformTarget>AnyCPU</PlatformTarget>, protože výsledkem je, že NuGet nekopíruje všechny soubory do složky přihrádky.