Opciones de configuración de Microsoft.Testing.Platform (MTP)

MTP admite el uso de archivos de configuración y variables de entorno para configurar el comportamiento de la plataforma de prueba. En este artículo se describen las opciones de configuración que puede usar para configurar la plataforma de prueba.

testconfig.json

La plataforma de prueba usa un archivo de configuración denominado [appname].testconfig.json para configurar el comportamiento de la plataforma de prueba. El archivo testconfig.json es un archivo JSON que contiene opciones de configuración para la plataforma de prueba.

El archivo testconfig.json tiene la siguiente estructura:

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

La plataforma detectará y cargará automáticamente el archivo [appname].testconfig.json ubicado en el directorio de salida del proyecto de prueba (cerca del ejecutable).

Al usar Microsoft.Testing.Platform.MSBuild, simplemente puede crear un archivo testconfig.json cuyo nombre se cambiará automáticamente a [appname].testconfig.json y se moverá al directorio de salida del proyecto de prueba.

A partir de MTP 1.5, puede usar el argumento --config-file de la línea de comandos para especificar la ruta de acceso a la testconfig.json. Este archivo tiene prioridad sobre el archivo [appname].testconfig.json .

Nota:

El archivo [appname].testconfig.json se sobrescribirá en compilaciones posteriores.

Uso de una testconfig.json centralizada

Si desea un único testconfig.json compartido entre varios proyectos de prueba, puede colocarlo en una ubicación central y pasarlo a través de --config-file. Cuando MSBuild está disponible (por ejemplo, dotnet test o dotnet run), puede usar la TestingPlatformCommandLineArguments propiedad MSBuild para pasar automáticamente el argumento. Agregarlo a directory.Build.props en la raíz del repositorio garantiza que todos los proyectos de prueba usen la misma configuración:

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

Prioridad de configuración

Cuando se puede especificar la misma configuración de varias maneras, MTP la resuelve en el orden siguiente (la primera coincidencia gana):

  1. Argumentos de línea de comandos (por ejemplo, --results-directory)
  2. Variables de entorno
  3. configuración de testconfig.json
  4. Valores predeterminados integrados

Opciones de plataforma

La platformOptions sección del archivo testconfig.json configura el comportamiento principal de la plataforma de prueba. En la tabla siguiente se enumeran todas las opciones de plataforma admitidas:

Entrada Predeterminado Descripción
resultDirectory TestResults Directorio donde se colocan los resultados de la prueba. Puede ser una ruta de acceso relativa (resuelta desde el directorio de trabajo actual) o una ruta de acceso absoluta. La --results-directory opción de línea de comandos tiene prioridad.
exitProcessOnUnhandledException false Cuando se establece en true, el proceso host de prueba finaliza inmediatamente cuando se producen excepciones no controladas, en lugar de permitir un cierre ordenado. La TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION variable de entorno (valores 1 o 0) tiene prioridad.

Nota:

Existen opciones internas adicionales de la plataforma para escenarios avanzados (como tiempos de espera de canalizaciones con nombre para controladores del host de pruebas). Estas opciones están pensadas para el uso de la infraestructura y no se tratan aquí.

Ejemplo:

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

Las opciones de extensión solo están disponibles mediante la CLI

Las características de la extensión, como el volcado de bloqueo, el volcado de cuelgue, el reintento, los informes TRX y la cobertura de código, no se pueden configurar mediante testconfig.json. Estas características se configuran exclusivamente a través de argumentos de línea de comandos.

Para obtener una referencia completa de las opciones de línea de comandos, consulte Referencia de opciones de la CLI de MTP.

Prueba de la configuración específica del marco de trabajo

Los marcos de pruebas pueden definir sus propias secciones de configuración en el archivo testconfig.json . Consulte la documentación del marco de pruebas:

  • MSTest: Configurar MSTest: testconfig.json
  • xUnit.net v3: xUnit.net testconfig.json
  • NUnit: Consulte la documentación de NUnit para obtener la información más reciente sobre la compatibilidad con Microsoft.Testing.Platform.
  • TUnit: consulte la documentación de TUnit para obtener la información más reciente sobre la compatibilidad con Microsoft.Testing.Platform.

Ejemplo de testconfig.json

En el ejemplo siguiente se muestra un archivo testconfig.json que configura las opciones de plataforma y la configuración de MSTest:

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

Migración de .runsettings a testconfig.json

Si va a migrar desde un archivo .runsettings , la tabla siguiente asigna la configuración común a sus testconfig.json equivalentes o alternativas:

Configuración de .runsettings equivalente a testconfig.json Notas
RunConfiguration/ResultsDirectory platformOptions.resultDirectory
RunConfiguration/MaxCpuCount Sin equivalente El paralelismo de nivel de proceso se controla mediante dotnet test --max-parallel-test-modules o la opción MSBuild /m .
MSTest/* mstest.* Consulte Configuración de MSTest: testconfig.json.
xUnit/* xUnit.* Consulte xUnit.net testconfig.json.
LoggerRunSettings/Loggers Solo CLI Use --report-trx o opciones similares de la CLI.
DataCollectionRunSettings (culpa) Solo interfaz de línea de comandos Use las opciones de la CLI --crashdump y --hangdump. Consulte Volcados de bloqueo y cuelgue.
DataCollectionRunSettings (cobertura) Solo para CLI Use la opción de CLI --coverage. Consulte Cobertura de código.
TestRunParameters CLI de --test-parameter Use --test-parameter key=value en la línea de comandos.

Variables de entorno

Las variables de entorno se pueden usar para proporcionar información de configuración en tiempo de ejecución.

Nota:

Las variables de entorno tienen prioridad sobre las opciones de configuración del archivo testconfig.json .

La variable de entorno TESTINGPLATFORM_EXIT_PROCESS_ON_UNHANDLED_EXCEPTION

Cuando se establece en 1, el proceso host de pruebas finaliza inmediatamente cuando se producen excepciones no controladas. Cuando se establece en 0, la plataforma permite un apagado ordenado. Esta configuración tiene prioridad sobre la platformOptions:exitProcessOnUnhandledException configuración.

La variable de entorno TESTINGPLATFORM_DEFAULT_HANG_TIMEOUT

Anula el tiempo de espera predeterminado (300 segundos) que se usa en las conexiones de canalizaciones con nombre entre el controlador del host de prueba y el host de prueba. El valor debe ser una TimeSpancadena compatible.

La variable de entorno TESTINGPLATFORM_UI_LANGUAGE

A partir de MTP 1.5, esta variable de entorno establece el idioma de la plataforma para mostrar mensajes y registros mediante un valor de configuración regional como en-us. Este lenguaje tiene prioridad sobre los lenguajes del SDK de Visual Studio y .NET. Los valores admitidos son los mismos que en Visual Studio. Para obtener más información, vea la sección sobre cómo cambiar el idioma del instalador en la documentación de instalación de Visual Studio.

La variable de entorno TESTINGPLATFORM_DIAGNOSTIC

Si se establece en 1, habilita el registro de diagnóstico.

La variable de entorno TESTINGPLATFORM_DIAGNOSTIC_VERBOSITY

Define el nivel de verbosidad cuando se habilitan los diagnósticos. Los valores disponibles son Trace, Debug, Information, Warning, Erroro Critical.

La variable de entorno TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_DIRECTORY

Directorio de salida de los registros de diagnóstico. Si no se especifica, el archivo se genera en el directorio TestResults predeterminado.

La variable de entorno TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX

Prefijo del nombre del archivo de registro. Tiene como valor predeterminado "log_".

La variable de entorno TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE

Obliga al registrador de archivos integrado a escribir registros de forma sincrónica. Resulta útil para escenarios en los que no desea perder ninguna entrada de registro (si el proceso se bloquea). Esto ralentiza la ejecución de la prueba.

La variable de entorno TESTINGPLATFORM_EXITCODE_IGNORE

Lista separada por punto y coma de códigos de salida que se omitirán. Cuando se omite un código de salida, el proceso devuelve 0 en su lugar. Por ejemplo, TESTINGPLATFORM_EXITCODE_IGNORE=2;8 ignora los fallos de las pruebas y los escenarios en los que no se ejecutó ninguna prueba.

Nota:

Las variables de entorno relacionadas con el diagnóstico tienen prioridad sobre sus argumentos de línea de comandos correspondientes --diagnostic-* .

Consulte también