Microsoft. Konfigurationsinställningar för Testing.Platform (MTP)

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):

  1. Kommandoradsargument (till exempel --results-directory)
  2. Miljövariabler
  3. testconfig.json inställningar
  4. 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
  }
}

Tilläggsalternativ kan endast användas via CLI

Tilläggsfunktioner som kraschdump, hängningsdump, återförsök, TRX-rapporter och kodtäckning kan inte konfigureras via testconfig.json. Dessa funktioner konfigureras endast via kommandoradsargument.

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:

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 endast CLI Använd --report-trx eller liknande CLI-alternativ.
DataCollectionRunSettings (skuld) endast CLI Använd --crashdump och --hangdump CLI-alternativ. Se Krasch- och låsningsdumpar.
DataCollectionRunSettings (täckning) endast CLI Använd --coverage CLI-alternativet. Se Kodtäckning.
TestRunParameters --test-parameter CLI Använd --test-parameter key=value på kommandoraden.

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. Standardinställningen är "log_". --diagnostic-file-prefix 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_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.

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_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.

Se även