Microsoft.Testing.Platform (MTP) - ustawienia konfiguracji

Protokół MTP obsługuje używanie plików konfiguracji i zmiennych środowiskowych do konfigurowania zachowania platformy testowej. W tym artykule opisano ustawienia konfiguracji, których można użyć do skonfigurowania platformy testowej.

testconfig.json

Platforma testowa używa pliku konfiguracji o nazwie [appname].testconfig.json w celu skonfigurowania zachowania platformy testowej. Plik testconfig.json jest plikiem JSON zawierającym ustawienia konfiguracji platformy testowej.

Plik testconfig.json ma następującą strukturę:

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

Platforma automatycznie wykryje i załaduje [appname].testconfig.json plik znajdujący się w katalogu wyjściowym projektu testowego (blisko pliku wykonywalnego).

W przypadku korzystania z Microsoft.Testing.Platform.MSBuildmożna po prostu utworzyć plik testconfig.json, który zostanie automatycznie zmieniony na [appname].testconfig.json i przeniesiony do katalogu wyjściowego projektu testowego.

Począwszy od protokołu MTP 1.5, możesz użyć argumentu --config-file wiersza polecenia, aby określić ścieżkę do testconfig.json. Ten plik ma pierwszeństwo przed [appname].testconfig.json pliku.

Notatka

Plik.testconfig.json [appname] zostanie zastąpiony w kolejnych kompilacjach.

Użyj scentralizowanego pliku testconfig.json

Jeśli chcesz, aby jeden plik testconfig.json był używany wspólnie przez wiele projektów testowych, możesz umieścić go w centralnym miejscu i przekazać za pośrednictwem --config-file. Jeśli program MSBuild jest dostępny (na przykład dotnet test lub dotnet run), możesz użyć TestingPlatformCommandLineArguments właściwości MSBuild, aby automatycznie przekazać argument. Dodanie tego elementu do katalogu głównego repozytorium Directory.Build.props gwarantuje, że wszystkie projekty testowe używają tej samej konfiguracji:

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

Pierwszeństwo konfiguracji

Jeśli to samo ustawienie można określić na wiele sposobów, MTP rozpoznaje je w następującej kolejności (pierwsze zwycięstwo meczu):

  1. Argumenty wiersza polecenia (na przykład --results-directory)
  2. Zmienne środowiskowe
  3. ustawieniatestconfig.json
  4. Wbudowane wartości domyślne

Opcje platformy

Sekcja platformOptions pliku testconfig.json konfiguruje podstawowe zachowanie platformy testowej. W poniższej tabeli wymieniono wszystkie obsługiwane opcje platformy:

Wpis Wartość domyślna Opis
resultDirectory TestResults Katalog, w którym są umieszczane wyniki testu. Może być ścieżką względną (rozpoznaną z bieżącego katalogu roboczego) lub ścieżką bezwzględną. --results-directory Opcja wiersza polecenia ma pierwszeństwo.
exitProcessOnUnhandledException false Po ustawieniu wartości true proces hosta testów kończy działanie natychmiast w przypadku nieobsłużonych wyjątków, zamiast umożliwiać łagodne zamknięcie. Zmienna TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION środowiskowa (wartości 1 lub 0) ma pierwszeństwo.

Notatka

Istnieją dodatkowe wewnętrzne opcje platformy dla zaawansowanych scenariuszy (takie jak limity czasu potoków nazwanych dla kontrolerów hosta testów). Te opcje są przeznaczone do użytku infrastruktury i nie są tutaj omówione.

Przykład:

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

Opcje rozszerzeń są dostępne tylko w interfejsie wiersza polecenia

Funkcje rozszerzenia, takie jak zrzut awaryjny, zrzut zawieszenia, ponawianie prób, raporty TRX i pokrycie kodu, nie mogą być konfigurowane za pomocą testconfig.json. Te funkcje są konfigurowane wyłącznie za pomocą argumentów wiersza polecenia.

Aby uzyskać pełną dokumentację opcji wiersza polecenia, zobacz Dokumentację opcji interfejsu wiersza polecenia MTP.

Ustawienia specyficzne dla platformy testowej

Struktury testowe mogą definiować własne sekcje konfiguracji w pliku testconfig.json . Zapoznaj się z dokumentacją platformy testowej:

Przykład testconfig.json

W poniższym przykładzie przedstawiono plik testconfig.json , który konfiguruje opcje platformy i ustawienia MSTest:

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

Migrowanie z pliku .runsettings do testconfig.json

W przypadku migracji z pliku .runsettings poniższa tabela mapuje typowe ustawienia na ich testconfig.json odpowiedniki lub alternatywy:

Ustawienie .runsettings odpowiednik testconfig.json Notatki
RunConfiguration/ResultsDirectory platformOptions.resultDirectory
RunConfiguration/MaxCpuCount Brak odpowiednika Równoległość na poziomie procesu jest sterowana za pomocą opcji dotnet test --max-parallel-test-modules lub opcji MSBuild /m.
MSTest/* mstest.* Zobacz Konfigurowanie narzędzia MSTest — testconfig.json.
xUnit/* xUnit.* Zobacz xUnit.net testconfig.json.
LoggerRunSettings/Loggers Tylko CLI Użyj --report-trx lub podobnych opcji CLI.
DataCollectionRunSettings (obwinianie) Tylko CLI Użyj opcji --crashdump i --hangdump wiersza polecenia. Zobacz Awaria i zawieszanie zrzutów.
DataCollectionRunSettings (pokrycie) Tylko interfejs wiersza poleceń Użyj opcji --coverage CLI. Zobacz Pokrycie kodu.
TestRunParameters --test-parameter Interfejs linii komend (CLI) Użyj polecenia --test-parameter key=value w wierszu polecenia.

Zmienne środowiskowe

Zmienne środowiskowe mogą służyć do dostarczania niektórych informacji o konfiguracji środowiska uruchomieniowego.

Notatka

Zmienne środowiskowe mają pierwszeństwo przed ustawieniami konfiguracji w pliku testconfig.json.

zmienna środowiskowa TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION

Gdy jest ustawiona wartość 1, proces hosta testowego jest natychmiast zamykany w przypadku nieobsługiwanych wyjątków. Po ustawieniu na 0 platforma umożliwia łagodne zamykanie. To ustawienie ma pierwszeństwo przed konfiguracją platformOptions:exitProcessOnUnhandledException .

zmienna środowiskowa TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT

Nadpisuje domyślny limit czasu (300 sekund) używany dla połączeń za pomocą nazwanych potoków między kontrolerem hosta testowego a hostem testowym. Wartość musi być ciągiem znaków zgodnym z TimeSpan.

zmienna środowiskowa TESTINGPLATFORM_UI_LANGUAGE

Począwszy od protokołu MTP 1.5, ta zmienna środowiskowa ustawia język platformy do wyświetlania komunikatów i dzienników przy użyciu wartości ustawień regionalnych, takich jak en-us. Ten język ma pierwszeństwo przed językami programu Visual Studio i zestawu .NET SDK. Obsługiwane wartości są takie same jak w przypadku programu Visual Studio. Aby uzyskać więcej informacji, zobacz sekcję dotyczącą zmiany języka instalatora w dokumentacji instalacji programu Visual Studio.

zmienna środowiskowa TESTINGPLATFORM_DIAGNOSTIC

Jeśli ustawiono wartość 1, włącza rejestrowanie diagnostyczne.

zmienna środowiskowa TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY

Określa poziom szczegółowości przy włączonej diagnostyce. Dostępne wartości to Trace, Debug, Information, Warning, Errorlub Critical.

zmienna środowiskowa TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY

Katalog wyjściowy rejestrowania diagnostycznego. Jeśli nie zostanie określony, plik zostanie wygenerowany w domyślnym katalogu TestResults .

zmienna środowiskowa TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX

Prefiks nazwy pliku dziennika. Wartość domyślna to "log_".

zmienna środowiskowa TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE

Wymusza synchroniczne zapisywanie logów przez wbudowany rejestrator plików. Przydatne w scenariuszach, w których nie chcesz utracić żadnych wpisów dziennika (jeśli proces ulegnie awarii). Spowoduje to spowolnienie wykonywania testu.

zmienna środowiskowa TESTINGPLATFORM_EXITCODE_IGNORE

Lista kodów zakończenia rozdzielonych średnikami, które mają zostać zignorowane. Gdy kod zakończenia jest ignorowany, proces zwraca 0 zamiast tego. Na przykład TESTINGPLATFORM_EXITCODE_IGNORE=2;8 ignoruje niepowodzenia testów i scenariusze bez testów.

Notatka

Zmienne środowiskowe związane z diagnostyką mają pierwszeństwo przed odpowiadającymi im --diagnostic-* argumentami wiersza polecenia.

Zobacz także