Microsoft.Testing.Platform (MTP)-Konfigurationseinstellungen

MTP unterstützt die Verwendung von Konfigurationsdateien und Umgebungsvariablen zum Konfigurieren des Verhaltens der Testplattform. In diesem Artikel werden die Konfigurationseinstellungen beschrieben, die Sie zum Konfigurieren der Testplattform verwenden können.

testconfig.json

Die Testplattform verwendet eine Konfigurationsdatei mit dem Namen [appname].testconfig.json , um das Verhalten der Testplattform zu konfigurieren. Die testconfig.json Datei ist eine JSON-Datei, die Konfigurationseinstellungen für die Testplattform enthält.

Die dateitestconfig.json hat die folgende Struktur:

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

Die Plattform erkennt und lädt automatisch die [appname].testconfig.json Datei im Ausgabeverzeichnis des Testprojekts (in der Nähe der ausführbaren Datei).

Wenn Sie Microsoft.Testing.Platform.MSBuild verwenden, können Sie einfach eine testconfig.json Datei erstellen, die automatisch in [appname] umbenannt.testconfig.jsonund in das Ausgabeverzeichnis des Testprojekts verschoben wird.

Ab MTP 1.5 können Sie das Befehlszeilenargument --config-file verwenden, um den Pfad zum testconfig.jsonanzugeben. Diese Datei hat Vorrang vor der [appname]-.testconfig.json Datei.

Hinweis

Die [appname]-.testconfig.json Datei wird bei nachfolgenden Builds überschrieben.

Verwenden einer zentralisierten testconfig.json

Wenn Sie eine einzelne testconfig.json von mehreren Testprojekten gemeinsam nutzen möchten, können Sie sie an einem zentralen Ort ablegen und über --config-file angeben. Wenn MSBuild verfügbar ist (z. B. dotnet test oder dotnet run), können Sie die MSBuild-Eigenschaft TestingPlatformCommandLineArguments verwenden, um das Argument automatisch zu übergeben. Wenn Sie dies zu einem Directory.Build.props im Repositorystamm hinzufügen, wird sichergestellt, dass alle Testprojekte dieselbe Konfiguration verwenden:

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

Konfigurationsrangfolge

Wenn dieselbe Einstellung auf mehrere Arten angegeben werden kann, wertet MTP diese in der folgenden Reihenfolge aus (die erste Übereinstimmung zählt):

  1. Befehlszeilenargumente (z. B --results-directory. )
  2. Umgebungsvariablen
  3. einstellungen fürtestconfig.json
  4. Voreingestellte Standardwerte

Plattformoptionen

Der platformOptions Abschnitt der dateitestconfig.json konfiguriert das Kernverhalten der Testplattform. In der folgenden Tabelle sind alle unterstützten Plattformoptionen aufgeführt:

Eingabe Vorgabe Description
resultDirectory TestResults Das Verzeichnis, in dem die Testergebnisse platziert werden. Kann ein relativer Pfad (aufgelöst aus dem aktuellen Arbeitsverzeichnis) oder ein absoluter Pfad sein. Die --results-directory Befehlszeilenoption hat Vorrang.
exitProcessOnUnhandledException false Wenn auf true festgelegt, wird der Testhostprozess bei unbehandelten Ausnahmen sofort beendet, anstatt ein geordnetes Herunterfahren zu ermöglichen. Die TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION Umgebungsvariable (Werte 1 oder 0) hat Vorrang.

Hinweis

Für erweiterte Szenarien (z. B. Named-Pipe-Timeouts für Testhost-Controller) gibt es zusätzliche interne Plattformoptionen. Diese Optionen sind für die Infrastrukturnutzung vorgesehen und werden hier nicht behandelt.

Beispiel:

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

Erweiterungsoptionen sind nur über die Befehlszeile verfügbar

Erweiterungsfeatures wie Absturzabbild, Hang Dump, Wiederholung, TRX-Berichte und Codeabdeckung können nicht über testconfig.jsonkonfiguriert werden. Diese Features werden ausschließlich über Befehlszeilenargumente konfiguriert.

Eine vollständige Referenz zu Befehlszeilenoptionen finden Sie in der MTP CLI-Optionsreferenz.

Testframework-spezifische Einstellungen

Testframeworks können ihre eigenen Konfigurationsabschnitte in der dateitestconfig.json definieren. Weitere Informationen finden Sie in der Dokumentation für Ihr Testframework:

Beispiel-testconfig.json

Das folgende Beispiel zeigt eine testconfig.json Datei, die Plattformoptionen und MSTest-Einstellungen konfiguriert:

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

Migrieren von .runsettings zu testconfig.json

Wenn Sie aus einer Runsettings-Datei migrieren, werden in der folgenden Tabelle allgemeine Einstellungen ihren testconfig.json Entsprechungen oder Alternativen zugeordnet:

.runsettings-Einstellung Äquivalent zu testconfig.json Hinweise
RunConfiguration/ResultsDirectory platformOptions.resultDirectory
RunConfiguration/MaxCpuCount Keine Entsprechung Die Parallelität auf Prozessebene wird durch dotnet test --max-parallel-test-modules oder die MSBuild-Option /m gesteuert.
MSTest/* mstest.* Siehe Konfigurieren von MSTest – testconfig.json.
xUnit/* xUnit.* Siehe xUnit.net testconfig.json.
LoggerRunSettings/Loggers Nur CLI Verwenden Sie --report-trx oder ähnliche CLI-Optionen.
DataCollectionRunSettings (Schuldzuweisung) Nur CLI Verwenden Sie --crashdump und --hangdump CLI-Optionen. Siehe Absturz- und Absturzabbilder.
DataCollectionRunSettings (Abdeckung) Nur CLI Verwenden Sie die CLI-Option --coverage. Siehe Codeabdeckung.
TestRunParameters --test-parameter CLI Verwenden Sie --test-parameter key=value in der Befehlszeile.

Umgebungsvariablen

Umgebungsvariablen können verwendet werden, um einige Laufzeitkonfigurationsinformationen bereitzustellen.

Hinweis

Umgebungsvariablen haben Vorrang vor Konfigurationseinstellungen in der dateitestconfig.json .

Umgebungsvariable TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION

Bei Festlegung auf 1, wird der Testhostprozess sofort bei unbehandelten Ausnahmen beendet. Wenn sie auf " 0" festgelegt ist, ermöglicht die Plattform das ordnungsgemäße Herunterfahren. Diese Einstellung hat Vorrang vor der platformOptions:exitProcessOnUnhandledException Konfiguration.

Umgebungsvariable TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT

Überschreibt das Standardtimeout (300 Sekunden), das für benannte Pipeverbindungen zwischen dem Testhostcontroller und dem Testhost verwendet wird. Der Wert muss eine TimeSpan-kompatible Zeichenfolge sein.

Umgebungsvariable TESTINGPLATFORM_UI_LANGUAGE

Ab MTP 1.5 legt diese Umgebungsvariable die Sprache der Plattform fest, um Nachrichten und Protokolle mithilfe eines Gebietsschemawerts wie en-us anzuzeigen. Diese Sprache hat Vorrang vor den Sprachen Visual Studio und .NET SDK. Die unterstützten Werte sind identisch mit denen für Visual Studio. Weitere Informationen finden Sie im Abschnitt zum Ändern der Sprache des Installationsprogramms in der Visual Studio-Installationsdokumentation.

Umgebungsvariable TESTINGPLATFORM_DIAGNOSTIC

Wenn auf 1 eingestellt, wird die Diagnoseprotokollierung aktiviert.

Umgebungsvariable TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY

Definiert die Ausführlichkeitsstufe, wenn die Diagnose aktiviert ist. Verfügbare Werte sind Trace, Debug, Information, Warning, Error oder Critical.

Umgebungsvariable TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY

Das Ausgabeverzeichnis der diagnostischen Protokollierung. Wenn nicht angegeben, wird die Datei im Standardverzeichnis TestResults generiert.

Umgebungsvariable TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX

Das Präfix für den Namen der Protokolldatei. Wird standardmäßig auf "log_" festgelegt.

Umgebungsvariable TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE

Zwingt den integrierten Dateilogger, Protokolle synchron zu schreiben. Nützlich für Szenarien, in denen keine Protokolleinträge verloren gehen sollen (bei Prozessabsturz). Dadurch wird die Testausführung verlangsamt.

Umgebungsvariable TESTINGPLATFORM_EXITCODE_IGNORE

Eine durch Semikolons getrennte Liste der zu ignorierenden Ausgangscodes. Wenn ein Exitcode ignoriert wird, gibt der Prozess stattdessen 0 zurück. Beispielsweise ignoriert TESTINGPLATFORM_EXITCODE_IGNORE=2;8 Testfehler und Szenarien, in denen keine Tests ausgeführt wurden.

Hinweis

Diagnosebezogene Umgebungsvariablen haben Vorrang vor den entsprechenden --diagnostic-* Befehlszeilenargumenten.

Siehe auch