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) CLI endast 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_OUTPUT_FILEPREFIX miljövariabel

Prefixet för loggfilens namn. Standardinställningen är "log_".

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

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.

Obs

Diagnostikrelaterade miljövariabler har företräde framför motsvarande --diagnostic-* kommandoradsargument.

Se även