Microsoft. Configuratie-instellingen voor Testing.Platform (MTP)

MTP ondersteunt het gebruik van configuratiebestanden en omgevingsvariabelen om het gedrag van het testplatform te configureren. In dit artikel worden de configuratie-instellingen beschreven die u kunt gebruiken om het testplatform te configureren.

testconfig.json

Het testplatform maakt gebruik van een configuratiebestand met de naam [appname].testconfig.json om het gedrag van het testplatform te configureren. Het testconfig.json-bestand is een JSON-bestand dat configuratie-instellingen voor het testplatform bevat.

Het bestand testconfig.json heeft de volgende structuur:

{
    "platformOptions": {
        "resultDirectory": "./TestResults"
    }
}

Het platform detecteert en laadt automatisch het [appname].testconfig.json bestand in de uitvoermap van het testproject (dicht bij het uitvoerbare bestand).

Wanneer u Microsoft.Testing.Platform.MSBuildgebruikt, kunt u gewoon een testconfig.json bestand maken dat automatisch wordt gewijzigd in [appname].testconfig.json en naar de uitvoermap van het testproject wordt verplaatst.

Vanaf MTP 1.5 kunt u het opdrachtregelargument --config-file gebruiken om het pad naar de testconfig.jsonop te geven. Dit bestand heeft voorrang op het bestand [appname].testconfig.json.

Notitie

Het [appname].testconfig.json bestand wordt overschreven op volgende builds.

Een gecentraliseerde testconfig.json gebruiken

Als u één testconfig.json wilt delen in meerdere testprojecten, kunt u deze op een centrale locatie plaatsen en doorgeven via --config-file. Wanneer MSBuild beschikbaar is (bijvoorbeeld dotnet test of dotnet run), kunt u de TestingPlatformCommandLineArguments eigenschap MSBuild gebruiken om het argument automatisch door te geven. Als u dit toevoegt aan een Directory.Build.props in de hoofdmap van de opslagplaats, zorgt u ervoor dat alle testprojecten dezelfde configuratie gebruiken:

<PropertyGroup>
  <TestingPlatformCommandLineArguments>
    $(TestingPlatformCommandLineArguments) --config-file $(MSBuildThisFileDirectory)testconfig.json
  </TestingPlatformCommandLineArguments>
</PropertyGroup>

Prioriteit van configuratie

Wanneer dezelfde instelling op meerdere manieren kan worden opgegeven, wordt deze door MTP omgezet in de volgende volgorde (eerste match wins):

  1. Opdrachtregelargumenten (bijvoorbeeld --results-directory)
  2. Omgevingsvariabelen
  3. instellingen voortestconfig.json
  4. Ingebouwde standaardinstellingen

Opties voor platforms

De platformOptions sectie van het bestandtestconfig.json configureert het kerngedrag van het testplatform. De volgende tabel bevat alle ondersteunde platformopties:

Entry Verstek Description
resultDirectory TestResults De map waarin de testresultaten worden geplaatst. Dit kan een relatief pad zijn (opgelost vanuit de huidige werkmap) of een absoluut pad. De --results-directory opdrachtregeloptie heeft voorrang.
exitProcessOnUnhandledException false Wanneer deze optie is ingesteld true, wordt het testhostproces onmiddellijk afgesloten bij niet-verwerkte uitzonderingen in plaats van een probleemloos afsluiten toe te staan. De TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION omgevingsvariabele (waarden 1 of 0) heeft voorrang.

Notitie

Er zijn aanvullende interne platformopties voor geavanceerde scenario's (zoals time-outs voor benoemde pijpen voor testhostcontrollers). Deze opties zijn bedoeld voor gebruik van infrastructuur en worden hier niet behandeld.

Voorbeeld:

{
  "platformOptions": {
    "resultDirectory": "../../TestResults",
    "exitProcessOnUnhandledException": false
  }
}

Omgevingsvariabelen in testconfig.json

Notitie

Beschikbaar in MTP vanaf versie 2.3.0.

In environmentVariables de sectie worden omgevingsvariabelen ingesteld voor het testproces voordat het wordt gestart. Gebruik tekenreekswaarden voor elke variabele.

{
  "environmentVariables": {
    "DOTNET_ENVIRONMENT": "Development",
    "FEATURE_FLAG": "true"
  }
}

CLI-opties in testconfig.json

Vóór MTP 2.3.0 zijn extensiefuncties zoals crashdump, hangdump, opnieuw proberen, TRX-rapporten en codedekking niet configureerbaar via testconfig.json. Deze functies worden uitsluitend geconfigureerd via opdrachtregelargumenten.

Vanaf MTP 2.3.0 kan MTP CLI-opties lezen van testconfig.json tot en met IConfiguration. Deze ondersteuning omvat uitbreidingsopties, zodat u JSON-items kunt gebruiken voor opties die u niet bij elke uitvoering via de opdrachtregel wilt doorgeven. Opdrachtregelargumenten hebben nog steeds voorrang.

Configuratie installeert of registreert geen extensie. Elke testtoepassing moet verwijzen naar het pakket dat een extensieoptie biedt, rechtstreeks of via een test-SDK-configuratie of -profiel. Anders blijft de optie niet herkend, ongeacht of u deze in testconfig.json of op de opdrachtregel plaatst.

Gebruik het commandLineOptions object voor actieve opties. Laat het voorloopteken -- uit elke sleutel weg. Gebruik true deze optie voor een optie zonder argumenten en gebruik false deze optie om een optie uit te schakelen. Gebruik voor één argument een tekenreeks of getal. Gebruik een matrix voor herhaalde of meerdere argumenten:

{ "commandLineOptions": {
  "report-trx": true,
  "report-trx-filename": "results.trx",
  "filter-uid": ["test-1", "test-2"]
} }

MTP beschouwt een scalaire waarde van het type string of getal als het eerste argument van een optie die een argument vereist. Als u een Boole-argument wilt doorgeven, gebruikt u een matrix zoals [true] of [false]. De matrix onderscheidt het argument van een Booleaanse aanwezigheidswaarde.

MTP valideert geconfigureerde vermeldingen, zoals opdrachtregelvermeldingen. Onbekende opties, ongeldige waarden en waarden met de verkeerde arity-validatie mislukken. Met een expliciete opdrachtregeloptie wordt de bijbehorende commandLineOptions vermelding overschreven.

Bootstrap-only opties worden uitgevoerd voordat de configuratie van MTP wordt geladen. Plaats diagnostic-file-prefix, diagnostic-verbosity, enable-dynamic-extensions, diagnostic-synchronous-write, commandLineOptions, diagnostic-output-directory of diagnostic niet in config-file.

Standaardwaarden voor passieve opdrachtregelopties

Important

commandLineOptionDefaults is beschikbaar in de previewversie van MTP 2.4.

Gebruik commandLineOptionDefaults dit om alleen een argument op te geven wanneer een ingeschakelde functie die optie aanvraagt en er geen hogere prioriteitswaarde bestaat. Een passieve standaardinstelling schakelt geen optie in, registreert een extensie of activeert een functie. Laat bij elke sleutel de voorafgaande -- weg.

{ "commandLineOptionDefaults": {
  "report-trx-filename": "{asm}.trx",
  "show-test-results": ["failed", "skipped"]
} }

MTP bepaalt een optiewaarde aan de hand van de eerste overeenkomst in deze prioriteitsvolgorde:

  • Een expliciete opdrachtregelwaarde.
  • Een actieve commandLineOptions vermelding.
  • Een commandLineOptionDefaults vermelding in testconfig.json.
  • Een door MSBuild geleverde standaardwaarde.

Voor een door MSBuild geleverde standaardwaarde voegt u een TestingPlatformCommandLineOptionDefault item toe. De Include waarde moet voorloopafbrekingen weglaten:

<TestingPlatformCommandLineOptionDefault Include="report-trx-filename"
                                         Value="{asm}.trx" />

Zie de naslaginformatie over MTP CLI-opties voor een volledig overzicht van opdrachtregelopties.

Frameworkspecifieke instellingen testen

Testframeworks kunnen hun eigen configuratiesecties definiëren in het testconfig.json-bestand . Raadpleeg de documentatie voor uw testframework:

Voorbeeld van testconfig.json

In het volgende voorbeeld ziet u een testconfig.json-bestand waarmee platformopties en MSTest-instellingen worden geconfigureerd:

{
  "platformOptions": {
    "resultDirectory": "./TestResults"
  },
  "mstest": {
    "parallelism": {
      "enabled": true,
      "workers": 4,
      "scope": "method"
    },
    "timeout": {
      "test": 30000
    },
    "execution": {
      "considerFixturesAsSpecialTests": true
    }
  }
}

Migreren van .runsettings naar testconfig.json

Als u migreert vanuit een RUNETTINGS-bestand , worden in de volgende tabel algemene instellingen toegewezen aan hun testconfig.json equivalenten of alternatieven:

.runsettings-instelling testconfig.json equivalent Aantekeningen
RunConfiguration/ResultsDirectory platformOptions.resultDirectory
RunConfiguration/MaxCpuCount Geen equivalent Parallellisme op procesniveau wordt beheerd door dotnet test --max-parallel-test-modules of MSBuild-optie /m .
MSTest/* mstest.* Zie MSTest configureren : testconfig.json.
xUnit/* xUnit.* Zie xUnit.net testconfig.json.
LoggerRunSettings/Loggers Opdrachtregelopties Gebruik de optie van de geïnstalleerde rapportextensie. Bijvoorbeeld, --report-trx vereist Microsoft.Testing.Extensions.TrxReport. Vanaf MTP 2.3.0 kan MTP CLI-opties lezen uit testconfig.json. Zie Testrapporten.
DataCollectionRunSettings (schuld) Opdrachtregelopties Gebruik --crashdump van Microsoft.Testing.Extensions.CrashDump of --hangdump van Microsoft.Testing.Extensions.HangDump. Vanaf MTP 2.3.0 kan MTP CLI-opties lezen uit testconfig.json. Zie Crash- en hangdumps.
DataCollectionRunSettings (dekking) Opdrachtregelopties Gebruik --coverage van Microsoft.Testing.Extensions.CodeCoverage. Vanaf MTP 2.3.0 kan MTP CLI-opties lezen uit testconfig.json. Zie codedekking.
TestRunParameters --test-parameter CLI Gebruik --test-parameter key=value op de opdrachtregel.

MSBuild-configuratie

Important

TestingPlatformEnvironmentVariable is beschikbaar in de previewversie van MTP 2.4.

Als u een omgevingsvariabele wilt instellen voor het testproces dat InvokeTestingPlatform wordt gestart, voegt u een TestingPlatformEnvironmentVariable item toe:

<TestingPlatformEnvironmentVariable Include="MY_OPTIONS"
                                    Value="first;second" />

De Value metagegevens behouden puntkomma's in plaats van ze te splitsen in MSBuild-items. Gedeclareerde waarden leggen de omgeving over die het MSBuild-proces overschrijft. Zonder deze items neemt het gestarte proces de omgeving ongewijzigd over.

Omgevingsvariabelen

Omgevingsvariabelen kunnen worden gebruikt om bepaalde runtimeconfiguratiegegevens op te geven.

Notitie

Omgevingsvariabelen hebben voorrang op configuratie-instellingen in het testconfig.json-bestand.

omgevingsvariabele TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION

Wanneer dit is ingesteld 1, wordt het testhostproces onmiddellijk afgesloten bij niet-verwerkte uitzonderingen. Als deze optie is ingesteld 0, staat het platform een probleemloos afsluiten toe. Deze instelling heeft voorrang op de platformOptions:exitProcessOnUnhandledException configuratie.

omgevingsvariabele TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT

Overschrijft de standaardtime-out (300 seconden) die wordt gebruikt voor benoemde pijpverbindingen tussen de testhostcontroller en testhost. De waarde moet een TimeSpan-compatibele tekenreeks zijn.

omgevingsvariabele TESTINGPLATFORM_UI_LANGUAGE

Vanaf MTP 1.5 stelt deze omgevingsvariabele de taal van het platform in voor het weergeven van berichten en logboeken met behulp van een landinstellingswaarde, zoals en-us. Deze taal heeft voorrang op de talen van Visual Studio en .NET SDK. De ondersteunde waarden zijn hetzelfde als voor Visual Studio. Zie de sectie over het wijzigen van de taal van het installatieprogramma in de documentatie voor de installatie van Visual Studiovoor meer informatie.

omgevingsvariabele TESTINGPLATFORM_DIAGNOSTIC

Als deze optie is ingesteld op 1, schakelt u de diagnostische logboekregistratie in.

omgevingsvariabele TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY

Definieert het uitgebreidheidsniveau wanneer diagnostische gegevens zijn ingeschakeld. De beschikbare waarden zijn Trace, Debug, Information, Warning, Errorof Critical.

omgevingsvariabele TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY

De uitvoermap van de diagnostische logregistratie. Als dit niet is opgegeven, wordt het bestand gegenereerd in de standaardmap TestResults .

omgevingsvariabele TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX

Het voorvoegsel voor de naam van het logboekbestand. Standaard gebruikt MTP <asm>_<tfm>_<arch> en voegt het een tijdstempel toe. De resulterende bestandsnaam is <asm>_<tfm>_<arch>_<timestamp>.diag. De variabele komt overeen met de --diagnostic-file-prefix opdrachtregeloptie.

Notitie

Deze omgevingsvariabelenaam is beschikbaar in MTP vanaf versie 2.3.0. De TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX verouderde omgevingsvariabele wordt nog steeds ondersteund voor compatibiliteit met oudere versies, maar is verouderd en wordt mogelijk verwijderd in een toekomstige hoofdversie. Wanneer beide variabelen zijn ingesteld, TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX heeft deze prioriteit.

omgevingsvariabele TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE

Dwingt de ingebouwde bestandslogger om logboeken synchroon te schrijven. Handig voor scenario's waarin u geen logboekvermeldingen wilt verliezen (als het proces vastloopt). Dit vertraagt de uitvoering van de test. Komt overeen met de --diagnostic-synchronous-write opdrachtregeloptie.

Notitie

Deze omgevingsvariabelenaam is beschikbaar in MTP vanaf versie 2.3.0. De TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE verouderde omgevingsvariabele wordt nog steeds ondersteund voor compatibiliteit met oudere versies, maar is verouderd en wordt mogelijk verwijderd in een toekomstige hoofdversie. Wanneer beide variabelen zijn ingesteld, TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE heeft deze prioriteit.

omgevingsvariabele TESTINGPLATFORM_EXITCODE_IGNORE

Een door puntkomma's gescheiden lijst met afsluitcodes die moeten worden genegeerd. Wanneer een exitcode wordt genegeerd, retourneert het proces in plaats daarvan 0. Negeert bijvoorbeeld TESTINGPLATFORM_EXITCODE_IGNORE=2;8 testfouten en scenario's zonder tests.

omgevingsvariabele TESTINGPLATFORM_NOBANNER

Wanneer deze optie is ingesteld op 1 of true, onderdrukt u de opstartbanner, het copyrightbericht en de telemetriebanner. Komt overeen met de --no-banner opdrachtregeloptie. De DOTNET_NOLOGO omgevingsvariabele heeft hetzelfde effect.

omgevingsvariabele NO_COLOR

Als deze optie is ingesteld op een niet-lege waarde, onderdrukt u alle ANSI-kleuruitvoer. MTP houdt zich aan de NO_COLOR conventie.

Notitie

Beschikbaar in MTP vanaf versie 2.3.0.

omgevingsvariabele DOTNET_NOLOGO

Wanneer deze optie is ingesteld op 1 of true, onderdrukt u de opstartbanner, het copyrightbericht en de telemetriebanner. Dit is de standaard-.NET CLI-omgevingsvariabele en wordt gehonoreerd door MTP. Zie ook TESTINGPLATFORM_NOBANNER.

omgevingsvariabele TESTINGPLATFORM_PIPE_DIRECTORY

Vanaf MTP 2.4.0 overschrijft deze variabele de map waarin MTP Unix-domeinsocketbestanden maakt voor named-pipe-communicatie. Gebruik deze als een sandbox of container het maken van sockets niet toestaat in de standaard tijdelijke map. MTP maakt en controleert de map en mislukt met een fout wanneer de map niet beschrijfbaar is of het resulterende socketpad te lang is.

De variabele heeft geen effect op Windows, waarbij benoemde pipes geen bestandssysteempaden gebruiken. Er wordt ook geen pijp verplaatst die door een ander proces, zoals de .NET SDK, wordt gemaakt.

Prototype voor het annuleren van deadlines

Warning

EXPERIMENTEEL/PROTOTYPE: Het annuleren van deadlines is een prototype in de previewversie van MTP 2.4. De variabelen en het gedrag ervan kunnen worden gewijzigd of verwijderd.

Stel TESTINGPLATFORM_DEADLINE in op het volledige hard-cancel-tijdstip dat is opgegeven door de deadlineproducer. Gebruik een ISO 8601 UTC-waarde. Trek de marges van MTP niet af van de waarde.

MTP verzoekt om een gecontroleerde stop vóór de deadline. TESTINGPLATFORM_DEADLINE_STOP_MARGIN bepaalt hoe vroeg en standaard 60 seconden is. Een testframework dat geen ondersteuning biedt voor een probleemloze stop negeert deze aanvraag.

Als terugvaloptie start TESTINGPLATFORM_DEADLINE_DUMP_MARGIN vóór de deadline een actieve HangDump-extensie. De marge is standaard ingesteld op 30 seconden. HangDump legt de processtructuur vast en doodt vervolgens de testhost. Zonder deadline start MTP geen deadlinetimer.

De generator van de deadline blijft verantwoordelijk voor de harde annulering op het opgegeven tijdstip.

omgevingsvariabele TESTINGPLATFORM_WAIT_ATTACH_DEBUGGER

Als dit is ingesteld op 1, wordt het testproces bij het opstarten gepauzeerd en wacht het tot een debugger verbinding maakt voordat het verdergaat. Komt overeen met de --debug opdrachtregeloptie. Niet ondersteund op browserplatforms.

Notitie

Deze omgevingsvariabele is beschikbaar in MTP vanaf versie 1.6.0.

omgevingsvariabele TESTINGPLATFORM_LAUNCH_ATTACH_DEBUGGER

Wanneer dit is ingesteld op 1, roept het testproces Debugger.Launch() aan bij het opstarten, wat het systeem ertoe aanzet een Just-In-Time-debugger te starten en die aan het proces te koppelen. Gebruik deze variabele om problemen met opstarttijd op te sporen (bijvoorbeeld handshake in de servermodus) die optreden voordat u handmatig kunt koppelen. Op niet-Windows platforms is het gedrag afhankelijk van het geconfigureerde JIT-foutopsporingsprogramma.

Notitie

Deze omgevingsvariabele is beschikbaar in MTP vanaf versie 1.6.0.

Notitie

Omgevingsvariabelen met betrekking tot diagnostische gegevens hebben voorrang op de bijbehorende --diagnostic-* opdrachtregelargumenten.

Zie ook