Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
MTP stöder användning av konfigurationsfiler och miljövariabler för att konfigurera testplattformens beteende. I den här artikeln beskrivs de konfigurationsinställningar som du kan använda för att konfigurera testplattformen.
testconfig.json
Testplattformen använder en konfigurationsfil med namnet [appname].testconfig.json för att konfigurera testplattformens beteende. Den testconfig.json filen är en JSON-fil som innehåller konfigurationsinställningar för testplattformen.
Filen testconfig.json har följande struktur:
{
"platformOptions": {
"resultDirectory": "./TestResults"
}
}
Plattformen identifierar och läser automatiskt in [appname].testconfig.json fil som finns i utdatakatalogen för testprojektet (nära den körbara filen).
När du använder Microsoft.Testing.Platform.MSBuildkan du helt enkelt skapa en testconfig.json fil som automatiskt kommer att byta namn till [appname].testconfig.json och flyttas till utdatakatalogen för testprojektet.
Från och med MTP 1.5 kan du använda kommandoradsargumentet --config-file för att ange sökvägen till testconfig.json. Den här filen har företräde framför filen [appname].testconfig.json.
Obs
Filen [appname].testconfig.json skrivs över på efterföljande versioner.
Använda en centraliserad testconfig.json
Om du vill ha en enda testconfig.json delas mellan flera testprojekt kan du placera den på en central plats och skicka den via --config-file. När MSBuild är tillgängligt (till exempel dotnet test eller dotnet run) kan du använda TestingPlatformCommandLineArguments egenskapen MSBuild för att automatiskt skicka argumentet. Om du lägger till detta i en Directory.Build.props på lagringsplatsens rot ser du till att alla testprojekt använder samma konfiguration:
<PropertyGroup>
<TestingPlatformCommandLineArguments>
$(TestingPlatformCommandLineArguments) --config-file $(MSBuildThisFileDirectory)testconfig.json
</TestingPlatformCommandLineArguments>
</PropertyGroup>
Konfigurationsprioritet
När samma inställning kan anges på flera sätt löser MTP den i följande ordning (första matchningen vinner):
- Kommandoradsargument (till exempel
--results-directory) - Miljövariabler
- testconfig.json inställningar
- Inbyggda standardvärden
Plattformsalternativ
Avsnittet platformOptions i testconfig.json-filen konfigurerar testplattformens kärnbeteende. I följande tabell visas alla plattformsalternativ som stöds:
| Entry | Standardinställning | Description |
|---|---|---|
resultDirectory |
TestResults |
Katalogen där testresultaten placeras. Kan vara en relativ sökväg (tolkas utifrån den aktuella arbetskatalogen) eller en absolut sökväg. Kommandoradsalternativet --results-directory har företräde. |
exitProcessOnUnhandledException |
false |
När den är inställd på true avslutas testvärdprocessen omedelbart vid ohanterade undantag i stället för att tillåta en kontrollerad avstängning. Miljövariabeln TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION (värden 1 eller 0) har företräde. |
Obs
Det finns ytterligare interna plattformsalternativ för avancerade scenarier (till exempel tidsgränser för namngivna rör för testvärdkontrollanter). De här alternativen är avsedda för infrastrukturanvändning och beskrivs inte här.
Exempel:
{
"platformOptions": {
"resultDirectory": "../../TestResults",
"exitProcessOnUnhandledException": false
}
}
Miljövariabler i testconfig.json
Obs
Finns i MTP från och med version 2.3.0.
Avsnittet environmentVariables anger miljövariabler för testprocessen innan den startar. Använd strängvärden för varje variabel.
{
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Development",
"FEATURE_FLAG": "true"
}
}
CLI-alternativ i testconfig.json
I versioner före MTP 2.3.0 kan tilläggsfunktioner som kraschdump, hängdump, återförsök, TRX-rapporter och kodtäckning inte konfigureras via testconfig.json. Dessa funktioner konfigureras endast via kommandoradsargument.
Från och med MTP 2.3.0 kan MTP läsa CLI-alternativ från testconfig.json till IConfiguration. Det här stödet innehåller tilläggsalternativ, så du kan använda JSON-poster för alternativ som du inte vill skicka på kommandoraden varje körning. Kommandoradsargument har fortfarande företräde.
Konfigurationen installerar eller registrerar inte något tillägg. Varje testprogram måste referera till det paket som tillhandahåller ett tilläggsalternativ, antingen direkt eller via en test-SDK-konfiguration eller profil. Annars förblir alternativet okänt oavsett om du placerar det i testconfig.json eller på kommandoraden.
Använd objektet commandLineOptions för aktiva alternativ. Utelämna inledande -- från varje nyckel. Använd true för ett nollargumentsalternativ och använd false för att inaktivera ett alternativ. Använd en sträng eller ett tal för ett argument. Använd en matris för upprepade eller flera argument:
{ "commandLineOptions": {
"report-trx": true,
"report-trx-filename": "results.trx",
"filter-uid": ["test-1", "test-2"]
} }
MTP behandlar en sträng eller talskalar som det första argumentet för ett argumentbärande alternativ. Om du vill skicka ett booleskt argument använder du en matris som [true] eller [false]. Matrisen skiljer argumentet från ett booleskt närvarovärde.
MTP validerar konfigurerade poster som kommandoradsposter. Okända alternativ, ogiltiga värden och värden med fel validering av aritet misslyckas. Ett uttryckligt kommandoradsalternativ åsidosätter motsvarande commandLineOptions posten.
Alternativ enbart för Bootstrap körs innan MTP laddar konfigurationen. Placera inte config-file, diagnostic, diagnostic-output-directory, diagnostic-file-prefix, diagnostic-verbosity, diagnostic-synchronous-write eller enable-dynamic-extensions i commandLineOptions.
Standardvärden för passiva kommandoradsalternativ
Important
commandLineOptionDefaults finns i förhandsversionen av MTP 2.4.
Använd commandLineOptionDefaults endast för att ange ett argument när en aktiverad funktion begär det alternativet och inget värde med högre prioritet finns. En passiv standardinställning aktiverar inte ett alternativ, registrerar ett tillägg eller aktiverar en funktion. Utelämna inledande -- från varje nyckel.
{ "commandLineOptionDefaults": {
"report-trx-filename": "{asm}.trx",
"show-test-results": ["failed", "skipped"]
} }
MTP löser ett alternativvärde med hjälp av den första matchningen i den här prioritetsordningen:
- Ett explicit kommandoradsvärde.
- En
commandLineOptionspost som är aktiv. - Ett
commandLineOptionDefaultselement i testconfig.json. - Ett standardvärde som tillhandahålls av MSBuild.
För ett standardvärde från MSBuild lägger du till ett TestingPlatformCommandLineOptionDefault-objekt. Värdet Include måste utelämna inledande bindestreck:
<TestingPlatformCommandLineOptionDefault Include="report-trx-filename"
Value="{asm}.trx" />
En fullständig referens till kommandoradsalternativ finns i referens för MTP CLI-alternativ.
Testa ramverksspecifika inställningar
Testramverk kan definiera sina egna konfigurationsavsnitt i filentestconfig.json . Se dokumentationen för ditt testramverk:
- MSTest: Konfigurera MSTest – testconfig.json
- xUnit.net v3: xUnit.net testconfig.json
- NUnit: Se NUnit-dokumentationen för stöd för den senaste versionen av Microsoft.Testing.Platform.
- TUnit: Se TUnit-dokumentationen för information om det senaste stödet för Microsoft.Testing.Platform.
Exempel testconfig.json
I följande exempel visas en testconfig.json fil som konfigurerar plattformsalternativ och MSTest-inställningar:
{
"platformOptions": {
"resultDirectory": "./TestResults"
},
"mstest": {
"parallelism": {
"enabled": true,
"workers": 4,
"scope": "method"
},
"timeout": {
"test": 30000
},
"execution": {
"considerFixturesAsSpecialTests": true
}
}
}
Migrera från .runsettings till testconfig.json
Om du migrerar från en .runsettings-fil mappar följande tabell vanliga inställningar till deras testconfig.json motsvarigheter eller alternativ:
| .runsettings-inställning | motsvarigheten till testconfig.json | Notes |
|---|---|---|
RunConfiguration/ResultsDirectory |
platformOptions.resultDirectory |
|
RunConfiguration/MaxCpuCount |
Ingen motsvarighet | Parallellitet på processnivå styrs av dotnet test --max-parallel-test-modules eller MSBuild-alternativet /m . |
MSTest/* |
mstest.* |
Se Konfigurera MSTest – testconfig.json. |
xUnit/* |
xUnit.* |
Se xUnit.net testconfig.json. |
LoggerRunSettings/Loggers |
CLI-alternativ | Använd alternativet från det installerade rapporttillägget. Till exempel kräver --report-trxMicrosoft.Testing.Extensions.TrxReport. Från och med MTP 2.3.0 kan MTP läsa CLI-alternativ från testconfig.json. Se Testrapporter. |
DataCollectionRunSettings (skuld) |
CLI-alternativ | Använd --crashdump från Microsoft.Testing.Extensions.CrashDump eller --hangdump från Microsoft.Testing.Extensions.HangDump. Från och med MTP 2.3.0 kan MTP läsa CLI-alternativ från testconfig.json. Se Krasch- och låsningsdumpar. |
DataCollectionRunSettings (täckning) |
CLI-alternativ | Använd --coverage från Microsoft.Testing.Extensions.CodeCoverage. Från och med MTP 2.3.0 kan MTP läsa CLI-alternativ från testconfig.json. Se Kodtäckning. |
TestRunParameters |
--test-parameter CLI |
Använd --test-parameter key=value på kommandoraden. |
MSBuild-konfiguration
Important
TestingPlatformEnvironmentVariable finns i förhandsversionen av MTP 2.4.
Om du vill ange en miljövariabel för testprocessen som InvokeTestingPlatform startas lägger du till ett TestingPlatformEnvironmentVariable objekt:
<TestingPlatformEnvironmentVariable Include="MY_OPTIONS"
Value="first;second" />
Metadata Value bevarar semikolon i stället för att dela upp dem i MSBuild-objekt. Deklarerade värden överlagrar miljön som MSBuild-processen ärver. Utan dessa objekt ärver den startade processen miljön oförändrad.
Miljövariabler
Miljövariabler kan användas för att tillhandahålla viss konfigurationsinformation vid körning.
Obs
Miljövariabler har företräde framför konfigurationsinställningarna i testconfig.json-filen.
TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION miljövariabel
När den är inställd på 1 avslutas testvärdsprocessen omedelbart vid ohanterade undantag. När den är inställd på 0 tillåter plattformen en kontrollerad avstängning. Den här inställningen har företräde framför konfigurationen platformOptions:exitProcessOnUnhandledException .
TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT miljövariabel
Åsidosätter standardtidsgränsen (300 sekunder) som används för named pipe-anslutningar mellan testvärdskontrollern och testvärden. Värdet måste vara en TimeSpan-kompatibel sträng.
TESTINGPLATFORM_UI_LANGUAGE miljövariabel
Från och med MTP 1.5 anger den här miljövariabeln plattformens språk för att visa meddelanden och loggar med hjälp av ett språkvärde som en-us. Det här språket har företräde framför Visual Studio- och .NET SDK-språken. De värden som stöds är desamma som för Visual Studio. Mer information finns i avsnittet om hur du ändrar installationsspråket i installationsdokumentationen för Visual Studio.
TESTINGPLATFORM_DIAGNOSTIC miljövariabel
Om värdet är inställt på 1aktiverar du diagnostikloggningen.
TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY miljövariabel
Definierar verbositetsnivån när diagnostik aktiveras. De tillgängliga värdena är Trace, Debug, Information, Warning, Erroreller Critical.
TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY miljövariabel
Utdatakatalogen för diagnostikloggningen. Om den inte anges genereras filen i standardkatalogen TestResults .
TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX miljövariabel
Prefixet för loggfilens namn. Som standard använder MTP <asm>_<tfm>_<arch> och lägger till en tidsstämpel. Det resulterande filnamnet är <asm>_<tfm>_<arch>_<timestamp>.diag. Variabeln motsvarar kommandoradsalternativet --diagnostic-file-prefix.
Obs
Det här miljövariabelnamnet är tillgängligt i MTP från och med version 2.3.0. Den äldre TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX miljövariabeln respekteras fortfarande för bakåtkompatibilitet men är inaktuell och kan tas bort i en framtida huvudversion. När båda variablerna har angetts TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX har de företräde.
TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE miljövariabel
Tvingar den inbyggda filloggaren att synkront skriva loggar. Användbart för scenarier där du inte vill förlora några loggposter (om processen kraschar). Detta gör testkörningen långsammare.
--diagnostic-synchronous-write Matchar kommandoradsalternativet.
Obs
Det här miljövariabelnamnet är tillgängligt i MTP från och med version 2.3.0. Den äldre TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE miljövariabeln respekteras fortfarande för bakåtkompatibilitet men är inaktuell och kan tas bort i en framtida huvudversion. När båda variablerna har angetts TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE har de företräde.
TESTINGPLATFORM_EXITCODE_IGNORE miljövariabel
En semikolonavgränsad lista med slutkoder att ignorera. När en avslutningskod ignoreras returnerar processen 0 i stället. Till exempel ignorerar TESTINGPLATFORM_EXITCODE_IGNORE=2;8 testfel och scenarier där inga tester kördes.
TESTINGPLATFORM_NOBANNER miljövariabel
När det är inställt på 1 eller trueundertrycks startbanderollen, copyrightmeddelandet och telemetribanderollen.
--no-banner Motsvarar kommandoradsalternativet. Miljövariabeln DOTNET_NOLOGO har samma effekt.
NO_COLOR miljövariabel
När värdet är inställt på ett värde som inte är tomt utelämnas alla ANSI-färgutdata. MTP följer NO_COLOR-konventionen.
Obs
Finns i MTP från och med version 2.3.0.
DOTNET_NOLOGO miljövariabel
När det är inställt på 1 eller trueundertrycks startbanderollen, copyrightmeddelandet och telemetribanderollen. Detta är miljövariabeln som är standard för .NET CLI och används av MTP. Se även TESTINGPLATFORM_NOBANNER.
TESTINGPLATFORM_PIPE_DIRECTORY miljövariabel
Från och med MTP 2.4.0 åsidosätter den här variabeln katalogen där MTP skapar Unix-domän-socket-filer för kommunikation med namngivna pipor. Använd den när en sandbox eller container inte tillåter att skapa socketar i standardkatalogen för temporära filer. MTP skapar och kontrollerar katalogen och returnerar ett fel när katalogen inte är skrivbar eller sökvägen till socketen blir för lång.
Variabeln har ingen effekt på Windows, där namngivna pipes inte använder filsystemsökvägar. Det flyttar inte heller ett rör som en annan process, till exempel .NET SDK, skapar.
Prototyp för tidsgränssavbokning
Varning
EXPERIMENTELL/PROTOTYP: Avbrytande av tidsfrist är en prototyp i förhandsversionen av MTP 2.4. Dess variabler och beteende kan ändras eller tas bort.
Ställ in TESTINGPLATFORM_DEADLINE på den exakta tidpunkten för hård avbrytning som tillhandahålls av den komponent som genererar tidsgränsen. Använd ett ISO 8601 UTC-värde. Subtrahera inte MTP:s marginaler från värdet.
MTP begär ett smidigt stopp före tidsgränsen.
TESTINGPLATFORM_DEADLINE_STOP_MARGIN styr hur tidigt och standardvärdet är 60 sekunder. Ett testramverk som inte stöder graciöst stopp ignorerar den här begäran.
Som reservlösning startar TESTINGPLATFORM_DEADLINE_DUMP_MARGIN ett aktivt HangDump-tillägg innan tidsfristen. Marginalen är som standard 30 sekunder. HangDump fångar processträdet och dödar sedan testvärdprocessen. Utan en tidsgräns startar MTP inte en tidsgränstimer.
Den som anger tidsgränsen är fortfarande ansvarig för tvingande avbrytning vid den angivna tidpunkten.
TESTINGPLATFORM_WAIT_ATTACH_DEBUGGER miljövariabel
När det är inställt 1på pausar testprocessen vid start och väntar på att ett felsökningsprogram ska bifogas innan du fortsätter.
--debug Motsvarar kommandoradsalternativet. Stöds inte på webbläsarplattformar.
Obs
Den här miljövariabeln är tillgänglig i MTP från och med version 1.6.0.
TESTINGPLATFORM_LAUNCH_ATTACH_DEBUGGER miljövariabel
När värdet är inställt på 1 anropar testprocessen Debugger.Launch() vid start, vilket får systemet att starta en just-in-time-felsökare och koppla den till processen. Använd den här variabeln för att felsöka problem med starttid (till exempel handskakning i serverläge) som inträffar innan du kan koppla manuellt. På icke-Windows plattformar beror beteendet på det konfigurerade JIT-felsökningsprogrammet.
Obs
Den här miljövariabeln är tillgänglig i MTP från och med version 1.6.0.
Obs
Diagnostikrelaterade miljövariabler har företräde framför motsvarande --diagnostic-* kommandoradsargument.