Impostazioni di configurazione di Microsoft.Testing.Platform (MTP)

MTP supporta l'uso di file di configurazione e variabili di ambiente per configurare il comportamento della piattaforma di test. Questo articolo descrive le impostazioni di configurazione che è possibile usare per configurare la piattaforma di test.

testconfig.json

La piattaforma di test usa un file di configurazione denominato [nomeapp].testconfig.json per configurare il comportamento della piattaforma di test. Il file testconfig.json è un file JSON che contiene le impostazioni di configurazione per la piattaforma di test.

Il file testconfig.json ha la struttura seguente:

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

La piattaforma rileverà e caricherà automaticamente il [nomeapp].testconfig.json file che si trova nella directory di output del progetto di test (vicino al file eseguibile).

Quando si usa Microsoft.Testing.Platform.MSBuild, è sufficiente creare un file testconfig.json che verrà rinominato automaticamente in [nomeapp].testconfig.json e spostato nella directory di output del progetto di test.

A partire da MTP 1.5, è possibile usare l'argomento --config-file della riga di comando per specificare il percorso del testconfig.json. Questo file ha la precedenza sul file [nomeapp].testconfig.json.

Nota

Il [nomeapp].testconfig.json file verrà sovrascritto nelle build successive.

Usare un testconfig.json centralizzato

Se si desidera utilizzare un unico testconfig.json condiviso tra più progetti di test, è possibile collocarlo in una posizione centrale e passarlo tramite --config-file. Quando MSBuild è disponibile (ad esempio, dotnet test o dotnet run), è possibile usare la proprietà TestingPlatformCommandLineArguments di MSBuild per passare automaticamente l'argomento. L'aggiunta di questo a un file Directory.Build.props nella directory radice del repository garantisce che tutti i progetti di test utilizzino la stessa configurazione:

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

Precedenza della configurazione

Quando la stessa impostazione può essere specificata in più modi, MTP la risolve nell'ordine seguente (prima corrispondenza vince):

  1. Argomenti della riga di comando (ad esempio, --results-directory)
  2. Variabili di ambiente
  3. impostazioni ditestconfig.json
  4. Impostazioni predefinite integrate

Opzioni della piattaforma

La platformOptions sezione del file ditestconfig.json configura il comportamento principale della piattaforma di test. Nella tabella seguente sono elencate tutte le opzioni della piattaforma supportate:

Ingresso Predefinito Description
resultDirectory TestResults Directory in cui vengono inseriti i risultati del test. Può essere un percorso relativo (risolto dalla directory di lavoro corrente) o un percorso assoluto. L'opzione --results-directory della riga di comando ha la precedenza.
exitProcessOnUnhandledException false Se impostato su true, il processo host di test termina immediatamente in caso di eccezioni non gestite anziché consentire una chiusura controllata. La TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION variabile di ambiente (valori 1 o 0) ha la precedenza.

Nota

Sono disponibili ulteriori opzioni interne della piattaforma per scenari avanzati, ad esempio timeout delle named pipe per i controller dell’host di test. Queste opzioni sono destinate all'uso dell'infrastruttura e non sono descritte qui.

Esempio:

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

Le opzioni di estensione sono disponibili solo tramite CLI

Le funzionalità dell'estensione, ad esempio dump di arresto anomalo, dump di blocco, nuovo tentativo, report TRX e copertura del codice, non sono configurabili tramite testconfig.json. Queste funzionalità vengono configurate esclusivamente tramite argomenti della riga di comando.

Per informazioni di riferimento complete sulle opzioni della riga di comando, vedere Informazioni di riferimento sulle opzioni dell'interfaccia della riga di comando mtp.

Testare le impostazioni specifiche del framework

I framework di test possono definire sezioni di configurazione personalizzate nel file testconfig.json . Vedere la documentazione relativa al framework di test:

testconfig.json di esempio

L'esempio seguente mostra un filetestconfig.json che configura le opzioni della piattaforma e le impostazioni MSTest:

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

Migrazione da .runsettings a testconfig.json

Se si esegue la migrazione da un file con estensione runsettings , la tabella seguente esegue il mapping delle impostazioni comuni alle relative alternative o equivalenti testconfig.json :

Impostazione di .runsettings equivalente di testconfig.json Note
RunConfiguration/ResultsDirectory platformOptions.resultDirectory
RunConfiguration/MaxCpuCount Nessun equivalente Il parallelismo a livello di processo è controllato dall'opzione dotnet test --max-parallel-test-modules o MSBuild /m .
MSTest/* mstest.* Vedere Configurare MSTest - testconfig.json.
xUnit/* xUnit.* Vedere xUnit.net testconfig.json.
LoggerRunSettings/Loggers Solo CLI Usare --report-trx o opzioni CLI simili.
DataCollectionRunSettings (colpa) Solo CLI Usare le opzioni CLI --crashdump e --hangdump. Vedere Arresti anomali e dump di blocco.
DataCollectionRunSettings (copertura) Solo CLI Usare l'opzione --coverage CLI. Vedi copertura del codice.
TestRunParameters Interfaccia della riga di comando di --test-parameter Usare --test-parameter key=value nella riga di comando.

Variabili di ambiente

Le variabili di ambiente possono essere usate per fornire alcune informazioni di configurazione di runtime.

Nota

Le variabili di ambiente hanno la precedenza sulle impostazioni di configurazione nel file testconfig.json.

TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION variabile di ambiente

Se impostato su 1, il processo host di test viene chiuso immediatamente in caso di eccezioni non gestite. Se impostato su 0, la piattaforma consente l'arresto controllato. Questa impostazione ha la precedenza sulla platformOptions:exitProcessOnUnhandledException configurazione.

TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT variabile di ambiente

Sostituisce il timeout predefinito (300 secondi) usato per le connessioni tramite pipe denominate tra il controller dell'host di test e l'host di test. Il valore deve essere una stringa compatibile con TimeSpan.

TESTINGPLATFORM_UI_LANGUAGE variabile di ambiente

A partire da MTP 1.5, questa variabile di ambiente imposta la lingua della piattaforma per la visualizzazione di messaggi e log usando un valore locale come en-us. Questo linguaggio ha la precedenza sui linguaggi di Visual Studio e .NET SDK. I valori supportati sono uguali a per Visual Studio. Per altre informazioni, vedere la sezione relativa alla modifica del linguaggio del programma di installazione nella documentazione di installazione di visual Studio .

TESTINGPLATFORM_DIAGNOSTIC variabile di ambiente

Se impostato su 1, abilita la registrazione diagnostica.

TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY variabile di ambiente

Definisce il livello di verbosità quando la diagnostica è abilitata. I valori disponibili sono Trace, Debug, Information, Warning, Erroro Critical.

TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY variabile di ambiente

Directory di output del log diagnostico. Se non specificato, il file viene generato nella directory TestResults predefinita.

TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX variabile di ambiente

Prefisso per il nome del file di log. Di default è "log_".

TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE variabile di ambiente

Forza il logger di file predefinito a scrivere i log in modo sincrono. Utile per le situazioni in cui non si vogliono perdere registrazioni di log (se il processo si arresta in modo anomalo). Ciò rallenta l'esecuzione del test.

TESTINGPLATFORM_EXITCODE_IGNORE variabile di ambiente

Elenco delimitato da punto e virgola di codici di uscita da ignorare. Quando un codice di uscita viene ignorato, il processo restituisce 0 invece . Ad esempio, TESTINGPLATFORM_EXITCODE_IGNORE=2;8 ignora gli errori di test e gli scenari senza test eseguiti.

Nota

Le variabili di ambiente correlate alla diagnostica hanno la precedenza sui corrispondenti --diagnostic-* argomenti della riga di comando.

Vedere anche