Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
MTP podporuje použití konfiguračních souborů a proměnných prostředí ke konfiguraci chování testovací platformy. Tento článek popisuje nastavení konfigurace, které můžete použít ke konfiguraci testovací platformy.
testconfig.json
Testovací platforma používá konfigurační soubor s názvem [appname].testconfig.json ke konfiguraci chování testovací platformy. Soubor testconfig.json je soubor JSON, který obsahuje nastavení konfigurace testovací platformy.
Soubor testconfig.json má následující strukturu:
{
"platformOptions": {
"resultDirectory": "./TestResults"
}
}
Platforma automaticky rozpozná a načte [appname].testconfig.json soubor umístěný ve výstupním adresáři testovacího projektu (blízko spustitelného souboru).
Při použití Microsoft.Testing.Platform.MSBuildmůžete jednoduše vytvořit testconfig.json soubor, který se automaticky přejmenuje na [appname].testconfig.json a přesunut do výstupního adresáře testovacího projektu.
Počínaje MTP 1.5 můžete pomocí argumentu --config-file příkazového řádku určit cestu k testconfig.json. Tento soubor má přednost před souborem [appname].testconfig.json.
Poznámka
Soubor.testconfig.json [appname] se přepíše v následných buildech.
Použijte centralizovaný testconfig.json
Pokud chcete sdílet jeden soubor testconfig.json mezi více testovacími projekty, můžete ho umístit na centrální místo a předat jej pomocí --config-file. Pokud je nástroj MSBuild k dispozici (například dotnet test nebo dotnet run), můžete argument automaticky předat pomocí vlastnosti MSBuild TestingPlatformCommandLineArguments. Přidáním do adresáře.Build.props v kořenovém adresáři úložiště zajistíte, aby všechny testovací projekty používaly stejnou konfiguraci:
<PropertyGroup>
<TestingPlatformCommandLineArguments>
$(TestingPlatformCommandLineArguments) --config-file $(MSBuildThisFileDirectory)testconfig.json
</TestingPlatformCommandLineArguments>
</PropertyGroup>
Priorita konfigurace
Pokud lze stejné nastavení zadat několika způsoby, MTP jej vyhodnotí v následujícím pořadí (platí první nalezená shoda):
- Argumenty příkazového řádku (například
--results-directory) - Proměnné prostředí
- nastavení testconfig.json
- Předdefinované výchozí hodnoty
Možnosti platformy
Část platformOptions souboru testconfig.json konfiguruje základní chování testovací platformy. V následující tabulce jsou uvedeny všechny podporované možnosti platformy:
| Položka | Výchozí | Description |
|---|---|---|
resultDirectory |
TestResults |
Adresář, do kterého se umístí výsledky testu. Může to být relativní cesta (přeložená z aktuálního pracovního adresáře) nebo absolutní cesta. Možnost příkazového řádku --results-directory má přednost. |
exitProcessOnUnhandledException |
false |
Pokud je nastavena hodnota true, proces hostitele testu se při neošetřených výjimkách okamžitě ukončí namísto umožnění řádného ukončení. Proměnná prostředí TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION (hodnoty 1 nebo 0) má přednost. |
Poznámka
K dispozici jsou další interní možnosti platformy pro pokročilé scénáře (například časové limity pojmenovaných kanálů pro řadiče hostitele testů). Tyto možnosti jsou určeny pro použití infrastruktury a nejsou zde popsány.
Příklad:
{
"platformOptions": {
"resultDirectory": "../../TestResults",
"exitProcessOnUnhandledException": false
}
}
Proměnné prostředí v testconfig.json
Poznámka
K dispozici v MTP od verze 2.3.0.
Oddíl environmentVariables nastaví proměnné prostředí pro testovací proces před jeho spuštěním. Pro každou proměnnou použijte řetězcové hodnoty.
{
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Development",
"FEATURE_FLAG": "true"
}
}
Možnosti CLI v souboru testconfig.json
Ve verzích před MTP 2.3.0 nejsou funkce rozšíření, jako jsou výpis paměti při selhání, výpis paměti při zablokování, opakovaný pokus, sestavy TRX a pokrytí kódu, konfigurovatelné prostřednictvím souboru testconfig.json. Tyto funkce se konfigurují výhradně prostřednictvím argumentů příkazového řádku.
Od verze MTP 2.3.0 může MTP číst volby příkazového řádku z testconfig.json prostřednictvím IConfiguration. Tato podpora zahrnuje možnosti rozšíření, takže můžete použít položky JSON pro možnosti, které nechcete předávat na příkazovém řádku při každém spuštění. Argumenty příkazového řádku mají stále přednost.
Konfigurace nenainstaluje ani nezaregistruje rozšíření. Každá testovací aplikace musí odkazovat na balíček, který poskytuje možnost rozšíření, a to buď přímo, nebo prostřednictvím konfigurace nebo profilu testovací sady SDK. V opačném případě zůstane možnost nerozpoznaná bez ohledu na to, jestli ji vložíte do testconfig.json nebo na příkazový řádek.
commandLineOptions Objekt použijte pro aktivní možnosti. Vynechte počáteční -- z každého klíče. Slouží true pro možnost nulového argumentu a slouží false k zakázání možnosti. Pro jeden argument použijte řetězec nebo číslo. Pro opakované nebo více argumentů použijte pole:
{ "commandLineOptions": {
"report-trx": true,
"report-trx-filename": "results.trx",
"filter-uid": ["test-1", "test-2"]
} }
MTP považuje řetězcový nebo číselný skalár za první argument parametru nesoucího argument. Pokud chcete předat logický argument, použijte matici, například [true] nebo [false]. Pole odlišuje argument od booleovské hodnoty indikující přítomnost.
MTP ověřuje nakonfigurované položky, jako jsou položky příkazového řádku. Neznámé možnosti, neplatné hodnoty a hodnoty s nesprávným počtem argumentů neprojdou validací. Explicitní možnost příkazového řádku přepíše odpovídající commandLineOptions položku.
Možnosti určené pouze pro bootstrap se spouštějí předtím, než MTP načte konfiguraci. Nevkládejte config-file, diagnostic, diagnostic-file-prefix, diagnostic-output-directory, diagnostic-verbosity, diagnostic-synchronous-write nebo enable-dynamic-extensions do commandLineOptions.
Výchozí nastavení možností pasivního příkazového řádku
Important
commandLineOptionDefaults je k dispozici ve verzi MTP 2.4 Preview.
Slouží commandLineOptionDefaults k zadání argumentu pouze v případě, že povolená funkce požaduje tuto možnost a neexistuje žádná hodnota s vyšší prioritou. Pasivní výchozí nastavení nepovoluje možnost, zaregistruje rozšíření nebo aktivuje funkci. Vynechte úvodní -- z každého klíče.
{ "commandLineOptionDefaults": {
"report-trx-filename": "{asm}.trx",
"show-test-results": ["failed", "skipped"]
} }
MTP určí hodnotu volby podle první shody v následujícím pořadí priorit:
- Explicitní hodnota příkazového řádku
- Aktivní
commandLineOptionspoložka. - Položka
commandLineOptionDefaultsv testconfig.json. - Výchozí nastavení nástroje MSBuild.
V případě výchozího nastavení nástroje MSBuild přidejte TestingPlatformCommandLineOptionDefault položku. Hodnota Include musí vynechat úvodní pomlčky:
<TestingPlatformCommandLineOptionDefault Include="report-trx-filename"
Value="{asm}.trx" />
Úplný odkaz na možnosti příkazového řádku najdete v referenčních informacích k možnostem rozhraní příkazového řádku MTP.
Testování nastavení specifických pro architekturu
Testovací architektury mohou definovat vlastní konfigurační oddíly v souboru testconfig.json . Projděte si dokumentaci pro testovací architekturu:
- MSTest: Konfigurace MSTest — testconfig.json
- xUnit.net v3: xUnit.net testconfig.json
- NUnit: Nejnovější informace o podpoře Microsoft.Testing.Platform najdete v dokumentaci k NUnit.
- TUnit: Informace o nejnovější podpoře Microsoft.Testing.Platform najdete v dokumentaci k TUnit.
Příklad testconfig.json
Následující příklad ukazuje soubortestconfig.json , který konfiguruje možnosti platformy a nastavení MSTest:
{
"platformOptions": {
"resultDirectory": "./TestResults"
},
"mstest": {
"parallelism": {
"enabled": true,
"workers": 4,
"scope": "method"
},
"timeout": {
"test": 30000
},
"execution": {
"considerFixturesAsSpecialTests": true
}
}
}
Migrace z .runsettings na testconfig.json
Pokud migrujete ze souboru .runsettings , následující tabulka mapuje běžná nastavení na jejich testconfig.json ekvivalenty nebo alternativy:
| Nastavení .runsettings | ekvivalent souboru testconfig.json | Poznámky |
|---|---|---|
RunConfiguration/ResultsDirectory |
platformOptions.resultDirectory |
|
RunConfiguration/MaxCpuCount |
Žádný ekvivalent | Paralelismus na úrovni procesu se řídí pomocí dotnet test --max-parallel-test-modules nebo volby MSBuild /m. |
MSTest/* |
mstest.* |
Viz Konfigurace MSTest — testconfig.json. |
xUnit/* |
xUnit.* |
Viz xUnit.net testconfig.json. |
LoggerRunSettings/Loggers |
Možnosti CLI | Použijte možnost z nainstalovaného rozšíření sestavy. Například --report-trx vyžaduje Microsoft.Testing.Extensions.TrxReport. Počínaje MTP 2.3.0 může MTP číst možnosti rozhraní příkazového řádku z testconfig.json. Viz testovací zprávy. |
DataCollectionRunSettings (obviňovat) |
Možnosti CLI | Použít --crashdump z Microsoft.Testing.Extensions.CrashDump nebo --hangdump z Microsoft.Testing.Extensions.HangDump. Počínaje MTP 2.3.0 může MTP číst možnosti rozhraní příkazového řádku z testconfig.json. Viz Výpisy pádů a zamrznutí. |
DataCollectionRunSettings (pokrytí) |
Možnosti CLI | Použít --coverage z Microsoft.Testing.Extensions.CodeCoverage. Počínaje MTP 2.3.0 může MTP číst možnosti rozhraní příkazového řádku z testconfig.json. Viz Pokrytí kódu. |
TestRunParameters |
--test-parameter CLI |
Použijte --test-parameter key=value na příkazovém řádku. |
Konfigurace nástroje MSBuild
Important
TestingPlatformEnvironmentVariable je k dispozici ve verzi MTP 2.4 Preview.
Chcete-li nastavit proměnnou prostředí pro testovací proces, který spouští InvokeTestingPlatform, přidejte položku TestingPlatformEnvironmentVariable:
<TestingPlatformEnvironmentVariable Include="MY_OPTIONS"
Value="first;second" />
Metadata Value zachovávají středníky místo toho, aby je rozdělila na položky MSBuild. Deklarované hodnoty překryjí prostředí, které proces MSBuild dědí. Bez těchto položek spuštěný proces zdědí prostředí beze změny.
Proměnné prostředí
Proměnné prostředí lze použít k poskytnutí některých informací o konfiguraci běhového prostředí.
Poznámka
Proměnné prostředí mají přednost před nastavením konfigurace v souboru testconfig.json.
TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION proměnná prostředí
Je-li nastavena hodnota 1, proces testovacího hostitele se při neošetřené výjimce okamžitě ukončí. Při nastavení 0umožňuje platforma řádné vypnutí. Toto nastavení má přednost před platformOptions:exitProcessOnUnhandledException konfigurací.
TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT proměnná prostředí
Přepíše výchozí časový limit (300 sekund) používaný pro připojení pojmenovaného kanálu mezi kontrolerem testovacího hostitele a testovacím hostitelem. Hodnota musí být řetězec kompatibilní s TimeSpan.
TESTINGPLATFORM_UI_LANGUAGE proměnná prostředí
Od MTP 1.5 tato proměnná prostředí nastavuje jazyk platformy pro zobrazování zpráv a logů pomocí hodnoty jazykového nastavení, jako je en-us. Tento jazyk má přednost před jazyky sady Visual Studio a .NET SDK. Podporované hodnoty jsou stejné jako pro Visual Studio. Další informace najdete v části o změně jazyka instalačního programu v dokumentaci k instalaci sady Visual Studio.
TESTINGPLATFORM_DIAGNOSTIC proměnná prostředí
Pokud je nastavená hodnota 1, povolí protokolování diagnostiky.
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY proměnná prostředí
Definuje úroveň podrobností, když je povolená diagnostika. Dostupné hodnoty jsou Trace, Debug, Information, Warning, Errornebo Critical.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY proměnná prostředí
Výstupní adresář diagnostického protokolování. Pokud není zadaný, soubor se vygeneruje ve výchozím adresáři TestResults .
TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX proměnná prostředí
Předpona názvu souboru protokolu. Ve výchozím nastavení MTP používá <asm>_<tfm>_<arch> a připojuje časové razítko. Výsledný název souboru je <asm>_<tfm>_<arch>_<timestamp>.diag. Proměnná odpovídá možnosti příkazového --diagnostic-file-prefix řádku.
Poznámka
Tento název proměnné prostředí je v MTP k dispozici od verze 2.3.0. Starší proměnná prostředí TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX je kvůli zpětné kompatibilitě stále podporována, ale je označena za zastaralou a v některé z budoucích hlavních verzí může být odebrána. Pokud jsou nastaveny obě proměnné, TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX má přednost.
TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE proměnná prostředí
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. Odpovídá možnosti příkazového řádku --diagnostic-synchronous-write.
Poznámka
Tento název proměnné prostředí je v MTP k dispozici od verze 2.3.0. Starší proměnná prostředí TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE je kvůli zpětné kompatibilitě stále podporována, ale je označena za zastaralou a v některé z budoucích hlavních verzí může být odebrána. Pokud jsou nastaveny obě proměnné, TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE má přednost.
TESTINGPLATFORM_EXITCODE_IGNORE proměnná prostředí
Středníkem oddělený seznam ukončovacích kódů, které se mají ignorovat. Pokud je ukončovací kód ignorován, proces místo toho vrátí 0. Například TESTINGPLATFORM_EXITCODE_IGNORE=2;8 ignoruje selhání testů a scénáře, kdy nebyl spuštěn žádný test.
TESTINGPLATFORM_NOBANNER proměnná prostředí
Při nastavení na 1 nebo true potlačí úvodní banner, zprávu o autorských právech a telemetrický banner. Odpovídá přepínači příkazového řádku --no-banner. Proměnná DOTNET_NOLOGO prostředí má stejný účinek.
NO_COLOR proměnná prostředí
Při nastavení na libovolnou neprázdnou hodnotu potlačí veškerý výstup barvy ANSI. MTP dodržuje konvenci NO_COLOR .
Poznámka
K dispozici v MTP od verze 2.3.0.
DOTNET_NOLOGO proměnná prostředí
Při nastavení na 1 nebo true potlačí úvodní banner, zprávu o autorských právech a telemetrický banner. Toto je standardní proměnná prostředí .NET CLI a MTP ji zohledňuje. Viz také TESTINGPLATFORM_NOBANNER.
TESTINGPLATFORM_PIPE_DIRECTORY proměnná prostředí
Počínaje MTP 2.4.0 tato proměnná přepíše adresář, ve kterém MTP vytvoří soubory unixového soketu domény pro pojmenovanou komunikaci. Použijte ho, když sandbox nebo kontejner nepovolí vytvoření soketu ve výchozím dočasném adresáři. MTP vytvoří a zkontroluje adresář a selže s chybou, pokud adresář není zapisovatelný nebo je výsledná cesta soketu příliš dlouhá.
Proměnná nemá žádný vliv na Windows, kde pojmenované kanály nepoužívají cesty systému souborů. Také nepřesune rouru, kterou vytvořil jiný proces, například sada .NET SDK.
Prototyp zrušení termínu
Warning
EXPERIMENTÁLNÍ/PROTOTYP: Zrušení termínu je prototypová funkce ve verzi MTP 2.4 Preview. Jeho proměnné a chování se mohou změnit nebo být odstraněny.
Nastavte TESTINGPLATFORM_DEADLINE na okamžik úplného tvrdého zrušení zadaný generátorem termínu. Použijte hodnotu ISO 8601 UTC. Neodčítejte okraje MTP od této hodnoty.
MTP žádá o řádné zastavení před uplynutím konečného termínu.
TESTINGPLATFORM_DEADLINE_STOP_MARGIN určuje, jak brzy a výchozí hodnota je 60 sekund. Testovací architektura, která nepodporuje řádné zastavení, tento požadavek ignoruje.
Jako záložní řešení TESTINGPLATFORM_DEADLINE_DUMP_MARGIN spustí aktivní rozšíření HangDump před vypršením časového limitu. Výchozí hodnota rezervy je 30 sekund. HangDump zachytí strom procesu a pak zabije testovacího hostitele. Bez konečného termínu MTP nespustí časovač konečného termínu.
Výrobce konečných termínů zůstává zodpovědný za tvrdé zrušení v okamžiku dodání.
TESTINGPLATFORM_WAIT_ATTACH_DEBUGGER proměnná prostředí
Při nastavení na 1 se testovací proces při spuštění pozastaví a před pokračováním počká na připojení ladicího programu. Odpovídá přepínači příkazového řádku --debug. Nepodporuje se na platformách prohlížeče.
Poznámka
Tato proměnná prostředí je v MTP k dispozici od verze 1.6.0.
TESTINGPLATFORM_LAUNCH_ATTACH_DEBUGGER proměnná prostředí
Když je nastavena hodnota 1, testovací proces při spuštění zavolá Debugger.Launch(), čímž vyzve systém ke spuštění ladicího programu just-in-time a jeho připojení k procesu. Pomocí této proměnné můžete ladit problémy při spuštění (například handshake v režimu serveru), ke kterým dochází před ručním připojením. Na platformách jiných než Windows závisí chování na nakonfigurovaném ladicím programu JIT.
Poznámka
Tato proměnná prostředí je v MTP k dispozici od verze 1.6.0.
Poznámka
Proměnné prostředí související s diagnostikou mají přednost před odpovídajícími --diagnostic-* argumenty příkazového řádku.