Informes de prueba

Cada opción de informe requiere el paquete de extensión denominado en su sección. Agregue el paquete directamente o use una configuración o perfil del SDK de prueba que lo incluya. Las extensiones de informe no forman parte del núcleo MTP, por lo que no se reconoce una opción como --report-trx cuando la aplicación de prueba no registra su extensión. Ejecute la aplicación de prueba con --helpo ejecute dotnet test --help en modo MTP para confirmar que hay disponible una opción.

Sugerencia

Al usar Microsoft.Testing.Platform.MSBuild (incluido transitivamente por MSTest, NUnit y ejecutores xUnit), estas extensiones se registran automáticamente al instalar sus paquetes NuGet, no se necesitan cambios de código. El registro manual especificado en este artículo solo es necesario si ha deshabilitado el punto de entrada generado automáticamente estableciendo <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

Informar de los nombres de archivo

Cada extensión de informe escribe su archivo en el directorio de resultados de las pruebas, que puede establecer con la opción --results-directory. Para invalidar el nombre, use la opción coincidente --report-*-filename . Cada sección de informe muestra el nombre predeterminado de ese informe.

Un nombre de archivo puede incluir una ruta de acceso relativa que permanece dentro del directorio de resultados de pruebas y puede usar los siguientes elementos de reemplazo (marcadores de posición):

Marcador de posición Description
{asm} Nombre del ensamblado de entrada, o unknown cuando no esté disponible.
{tfm} Moniker del marco de trabajo de destino detectado en tiempo de ejecución, como net9.0.
{arch} Arquitectura de procesos, como x64, x86o arm64.
{pname} Nombre del proceso.
{pid} Id. de proceso.
{time} Marca de tiempo de alta precisión.

Por ejemplo, --report-trx-filename "{asm}_{tfm}_{arch}.trx" reproduce el nombre TRX predeterminado.

Si ya existe un nombre de archivo TRX, HTML o JUnit predeterminado o explícito para un origen de prueba, la extensión advierte y sobrescribe el archivo. A partir de la versión preliminar de MTP 2.4, CTRF usa el mismo comportamiento. Para conservar el historial de informes, incluya {time}.

Nota:

Los nombres de los marcadores de posición distinguen entre mayúsculas y minúsculas y se escriben en minúsculas. MTP admite marcadores de posición en los nombres de archivo de los informes a partir de la versión 2.3.0.

Consolidación de informes

A partir de la versión 2.4.0 de MTP, MTP procesa automáticamente los artefactos de informe después de que una dotnet test invocación ejecute varios módulos de prueba o después de que la función de reintentos realice varios intentos. La característica es experimental en MTP 2.4.0.

Las extensiones TRX, JUnit, CTRF y HTML agrupan los artefactos compatibles por tipo de informe y generan un informe consolidado en el subdirectorio merged del directorio de resultados de las pruebas. La consolidación de CTRF combina los resultados de los módulos y agrupa los intentos de reintento en el resultado final de la prueba con el historial de reintentos. La consolidación html crea un resumen combinado y conserva los informes originales por proceso.

Para las extensiones de informe personalizadas, la API experimental IArtifactPostProcessor expone modos independientes TestModules y RetryAttempts de procesamiento. Para obtener más información, consulte Las IArtifactPostProcessor extensiones.

informes de prueba de Visual Studio (TRX)

El Visual Studio archivo de resultados de pruebas (o TRX) es el formato predeterminado para publicar resultados de pruebas. Esta extensión requiere el paquete NuGet Microsoft.Testing.Extensions.TrxReport .

Registro manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddTrxReportProvider();

Nota:

Al usar el registro manual, registre el proveedor de informes TRX por última vez. La aplicación actual depende del orden de registro, por lo que al registrarla después de todas las demás extensiones se garantiza que capturen todos los datos de prueba.

Nota:

Disponible en MTP a partir de la versión 1.9.0, el informe TRX incluye el campo de prueba Description .

Nota:

Disponible en MTP a partir de la versión 2.3.0, los resultados de TRX se transfieren al disco a medida que avanza la ejecución. Si el host de pruebas se bloquea, el archivo TRX conserva los resultados recopilados antes de que se produjera el bloqueo.

A partir de la versión preliminar de MTP 2.4, un TRX generado por MTP conserva los metadatos de MSTest [WorkItem] y [GitHubWorkItem].

Options

Opción Description
--report-trx Genera el informe TRX.
--report-trx-filename Nombre del informe TRX generado. A partir de MTP 2.3.0, el valor predeterminado es el formulario determinista {asm}_{tfm}_{arch}.trx ; antes de MTP 2.3.0, el valor predeterminado era <UserName>_<MachineName>_<yyyy-MM-dd_HH_mm_ss.fffffff>.trx. Para personalizar el nombre, consulte Nombres de archivo de informe.

El informe se guarda dentro de la carpeta TestResults predeterminada que se puede especificar a través del argumento de --results-directory la línea de comandos.

Informes HTML

El informe HTML crea un archivo HTML interactivo e independiente para una sesión de prueba. Esta extensión requiere el paquete NuGet Microsoft.Testing.Extensions.HtmlReport.

Nota:

Disponible en MTP a partir de la versión 2.3.0. Esta extensión es experimental y sus opciones y formato de salida pueden cambiar en una versión futura.

Registro manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddHtmlReportProvider();

Options

Opción Description
--report-html Genera el informe HTML.
--report-html-filename Nombre del informe HTML generado. El valor debe terminar con .html. El valor predeterminado es {asm}_{tfm}_{arch}.html. Para personalizar el nombre, consulte Nombres de archivo de informe. Se requiere --report-html.

Informes de JUnit

El informe JUnit crea un archivo XML compatible con JUnit para una sesión de prueba. Esta extensión requiere el paquete NuGet Microsoft.Testing.Extensions.JUnitReport.

Nota:

Disponible en MTP a partir de la versión 2.3.0. Esta extensión es experimental y sus opciones y formato de salida pueden cambiar en una versión futura.

A partir de MSTest.Sdk 4.3, habilite esta extensión con <EnableMicrosoftTestingExtensionsJUnitReport>true</EnableMicrosoftTestingExtensionsJUnitReport>. La extensión no forma parte de los perfiles Default o AllMicrosoft de MSTest.Sdk.

Registro manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddJUnitReportProvider();

Options

Opción Description
--report-junit Genera el informe XML de JUnit.
--report-junit-filename Nombre del informe XML de JUnit generado. El valor debe terminar con .xml. El valor predeterminado es {asm}_{tfm}_{arch}.xml. Para personalizar el nombre, consulte Nombres de archivo de informe. Se requiere --report-junit.

Informes CTRF

El informe CTRF crea un archivo JSON que usa el formato de informe de prueba común para una sesión de prueba. Esta extensión requiere el paquete NuGet Microsoft.Testing.Extensions.CtrfReport.

Nota:

Disponible en MTP a partir de la versión 2.3.0. Esta extensión es experimental y sus opciones y formato de salida pueden cambiar en una versión futura.

Registro manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddCtrfReportProvider();

Options

Opción Description
--report-ctrf Genera el informe JSON de CTRF.
--report-ctrf-filename Nombre del informe JSON de CTRF generado. El valor debe terminar con .json. El valor predeterminado es <UserName>_<MachineName>_<assembly>_<tfm>_<timestamp>.ctrf.json. Para personalizar el nombre, consulte Nombres de archivo de informe. Se requiere --report-ctrf.

A partir de la versión preliminar de MTP 2.4, CTRF conserva todos los resultados cuando varias pruebas usan el mismo UID. También incluye datos adjuntos de cada prueba y de intentos anteriores, e infiere sus tipos MIME a partir de los nombres de archivo.

En el caso de las pruebas de reintento, CTRF correlaciona los intentos solo cuando la relación es inequívoca. A continuación, registra los intentos anteriores en retryAttempts, establece retriesy marca un resultado correcto posterior como flaky: true. Los resultados ambiguos del mismo UID permanecen separados para que el informe no asocie diagnósticos a la prueba incorrecta.

El resumen de la terminal identifica las pruebas inestables y las que se han reintentado. Los informes TRX y JUnit mantienen un resultado final por prueba en lugar de grabar cada intento.

informes de Azure DevOps

La extensión de informe Azure DevOps integra ejecuciones de pruebas mtP con Azure Pipelines. Formatea errores y advertencias para los registros de la canalización, agrega anotaciones para pruebas fallidas y omitidas, crea un resumen del trabajo en Markdown y puede agrupar la salida por ensamblado de pruebas. La extensión también puede identificar errores poco activos o en cuarentena, cargar artefactos de prueba y transmitir resultados a una ejecución de prueba de Azure DevOps.

Al hospedar el código en GitHub pero ejecutar pruebas en agentes de Azure Pipelines, las anotaciones de error pueden aparecer directamente en la solicitud de incorporación de cambios de GitHub:

anotación Error de anotación en GitHub vista de archivos

Esta extensión requiere el paquete NuGet Microsoft.Testing.Extensions.AzureDevOpsReport .

Registro manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHost.AddAzureDevOpsProvider();

Options

Opción Versión de MTP Description
--report-azdo 1.9.0 Habilita el generador de informes Azure DevOps. Los errores y advertencias se escriben en la salida en un formato que Azure DevOps entiende.
--report-azdo-severity 1.9.0 Gravedad que se debe aplicar a los eventos notificados. Los valores válidos son error (valor predeterminado) y warning.
--report-azdo-groups 2.4.0 Habilita o deshabilita los grupos de registros por ensamblado. Cuando está habilitada, la salida de cada ensamblado de prueba aparece en una sección contraíble del registro de Azure Pipelines. Los valores válidos son on y off. Las compilaciones preliminares de MTP 2.4.0 usan off de forma predeterminada; la versión estable de MTP 2.4.0 usa on de forma predeterminada. Se requiere --report-azdo.
--report-azdo-annotations 2.4.0 Habilita o deshabilita las anotaciones para las pruebas con errores y omitidas. Los valores válidos son on (valor predeterminado) y off. Se requiere --report-azdo.
--report-azdo-flaky-history 2.3.0 Consulta el historial de resultados de pruebas de Azure DevOps de los últimos N días (1-90) y anota los fallos notificados con información contextual sobre la inestabilidad. Se requiere --report-azdo.
--report-azdo-demote-known-flaky 2.3.0 Rebaja los errores lo suficientemente intermitentes en la ventana de historial de Azure DevOps (el umbral predeterminado es del 25 %) de errores a advertencias. Requiere --report-azdo y --report-azdo-flaky-history.
--report-azdo-quarantine-file 2.3.0 Ruta a un archivo de texto que enumera los nombres completos de las pruebas en cuarentena o los patrones globales. Los errores coincidentes se notifican como advertencias. Se requiere --report-azdo.
--report-azdo-summary 2.3.0 Escribe un resumen del trabajo en Markdown al final de la ejecución de pruebas y lo sube a través de ##vso[task.uploadsummary]. Un argumento de ruta de acceso de archivo opcional invalida la ubicación predeterminada ({testResultsDir}/azdo-summary-{tfm}.md). Se requiere --report-azdo.
--report-azdo-stackframe-filter 2.3.0 Añade patrones de expresiones regulares, que se comparan con el prefijo de tipo completo de cada marco de pila, y que se omiten cuando la extensión localiza el punto de llamada del usuario para anotarlo. La opción es repetible, hasta 16 patrones, y cada patrón se compila con un tiempo de espera de coincidencia de 500 ms. Estos patrones se añaden a los prefijos de implementación de aserciones de MSTest integrados en la extensión. Se requiere --report-azdo.
--report-azdo-upload-artifacts 2.3.0 Carga archivos de resultados de prueba o agrega etiquetas de compilación a Azure DevOps. Los valores válidos son off (valor predeterminado), tags-only, filesy all.
--report-azdo-upload-artifact-include 2.3.0 Incluye archivos en la carga de artefactos de Azure DevOps mediante patrones glob relativos al directorio de resultados de las pruebas. Tiene como valor predeterminado **/*. Requiere --report-azdo-upload-artifacts que sea un valor distinto de off.
--report-azdo-upload-artifact-exclude 2.3.0 Excluye archivos de la carga de artefactos de Azure DevOps mediante patrones glob relativos al directorio de resultados de las pruebas. Requiere --report-azdo-upload-artifacts que sea un valor distinto de off.
--report-azdo-upload-artifact-name 2.3.0 Invalida el nombre del contenedor de artefactos de Azure DevOps. Tiene como valor predeterminado TestResults_{assemblyName}_{tfm}. Requiere --report-azdo-upload-artifacts que sea un valor distinto de off.
--publish-azdo-test-results 2.3.0 Transmite los resultados a una ejecución de pruebas de Azure DevOps a medida que se completan las pruebas. En la pestaña Pruebas de la compilación se muestra la ejecución completada.
--publish-azdo-run-name 2.3.0 Establece un nombre de ejecución de prueba de Azure DevOps personalizado para la publicación de resultados de pruebas en directo. Se requiere --publish-azdo-test-results.

Warning

No habilite grupos cuando se ejecuten varios ensamblados de prueba en paralelo. Azure DevOps ##[group] y ##[endgroup] los comandos de formato son secuenciales y anónimos. La salida simultánea de ensamblajes puede entremezclarse, provocar un anidamiento incorrecto de grupos y asignar líneas a un ensamblaje equivocado. Si usa una compilación preliminar de MTP 2.4.0, pase --report-azdo-groups off para deshabilitar los grupos. La versión estable de MTP 2.4.0 deshabilita los grupos de forma predeterminada. Use --report-azdo-groups on solo para una única compilación o para una ejecución serializada de la compilación.

Nota:

La columna versión de MTP enumera la primera versión de MTP que contiene cada opción. La extensión Azure DevOps se convirtió en estable en MTP 1.9.0 con --report-azdo y --report-azdo-severity; las opciones restantes se agregaron en MTP 2.3.0 o 2.4.0.

La extensión detecta automáticamente que se ejecuta en el entorno de integración continua (CI) comprobando la variable de TF_BUILD entorno.

A partir de MTP 2.4.0, Azure DevOps Markdown resume los resultados agregados en todos los módulos de prueba de una dotnet test invocación. Al habilitar también la cobertura de código, el resumen incluye recuentos cubiertos y totales, porcentajes, resultados de umbral y un indicador cuando los datos de cobertura son parciales.

En la versión preliminar de MTP 2.4, la publicación en tiempo real sube automáticamente los archivos adjuntos de los resultados fallidos a los resultados de prueba de Azure DevOps. Los resultados no satisfactorios incluyen resultados fallidos, con error, agotados por tiempo de espera y cancelados.

Cuando un resultado incluye una salida estándar o un error estándar, la extensión puede adjuntar hasta 256 KiB de cada flujo en línea. Cada archivo adjunto respaldado tiene un límite de 16 MiB.

La extensión también carga archivos .coverage, .cobertura.xml y .opencover.xml de nivel de ejecución como adjuntos de cobertura de código. Estos archivos adjuntos de las ejecuciones de prueba y de resultados son independientes de --report-azdo-upload-artifacts, que carga los archivos seleccionados como artefactos de compilación de Azure Pipelines.

Para las pruebas reintentadas, Azure DevOps publica los intentos anteriores como subresultados y adjunta los artefactos de cada intento al subresultado que los produjo. Si la correlación de reintento segura no está disponible, la extensión publica un resultado independiente en lugar de quitarlo.

Cuando la publicación en vivo crea la ejecución, imprime la dirección URL de ejecución para que pueda seguir los resultados antes de la finalización. También envía pipelineReference y la fecha de inicio cuando el entorno del pipeline los proporciona. La pestaña Pruebas de la compilación no enumera una ejecución en curso; enumera la ejecución después de la finalización.

informes de Acciones de GitHub

El informe de Acciones de GitHub emite comandos de flujo de trabajo nativos de Acciones de GitHub para que las ejecuciones de pruebas ofrezcan una experiencia de primera clase en el ejecutor: grupos de registros por ensamblado, anotaciones de pruebas fallidas y omitidas (que aparecen en la pestaña Anotaciones del flujo de trabajo y, cuando se resuelve la ubicación de origen, en el diff de Archivos modificados de la solicitud de extracción), un resumen del trabajo en Markdown anexado al archivo al que hace referencia GITHUB_STEP_SUMMARY, y avisos de pruebas lentas.

Esta extensión requiere el paquete NuGet Microsoft.Testing.Extensions.GitHubActionsReport.

La extensión solo se activa cuando la ejecución se realiza en Acciones de GitHub (la variable de entorno GITHUB_ACTIONS es true) y la opción --report-gh está activada; de lo contrario, no hace nada. Cuando está activa, cada característica está habilitada de forma predeterminada y se puede desactivar individualmente con su --report-gh-* opción.

Importante

La --report-gh opción pertenece a Microsoft.Testing.Extensions.GitHubActionsReport. El paquete GitHubActionsTestLogger proporciona una opción diferente, --report-github. Las opciones no son alias y solo funcionan cuando el proyecto de prueba registra el paquete que posee la opción.

Nota:

La extensión está disponible a partir de MTP 2.3.0. A partir de MTP 2.4.0, sus puntos de entrada públicos ya no son experimentales.

Registro manual

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddGitHubActionsProvider();

Options

Opción Versión de MTP Description
--report-gh 2.3.0 Habilita el generador de informes de Acciones de GitHub para que las ejecuciones de pruebas emitan comandos de flujo de trabajo. Requiere que la ejecución esté en Acciones de GitHub.
--report-gh-groups 2.3.0 Habilita o deshabilita los grupos de registros por ensamblado. Los valores válidos son on (valor predeterminado) y off. Se requiere --report-gh.
--report-gh-annotations 2.3.0 Habilita o deshabilita las anotaciones para las pruebas con errores y omitidas. Los valores válidos son on (valor predeterminado) y off. Se requiere --report-gh.
--report-gh-step-summary 2.3.0 Controla si la extensión escribe un resumen de trabajo de Markdown en el archivo al que hace GITHUB_STEP_SUMMARYreferencia . Los valores válidos son on (valor predeterminado), offy, a partir de MTP 2.4.0, on-failure. Se requiere --report-gh.
--report-gh-step-summary-sections 2.4.0 Selecciona el contenido de resumen. Los valores válidos son test-results, slow-tests, coveragey all (valor predeterminado). Requiere --report-gh y un modo de resumen distinto de off.
--report-gh-failure-details 2.4.0 Habilita o deshabilita los detalles de fallo limitados en el resumen del trabajo. Use on (valor predeterminado) o off. Los detalles incluyen el mensaje, el tipo de excepción, la ubicación de origen y el seguimiento de la pila cuando están disponibles. Se requiere --report-gh.
--report-gh-history 2.4.0 Lee y actualiza una instantánea limitada del historial local de pruebas en la ruta de archivo especificada. El flujo de trabajo debe descargar la instantánea anterior antes de ejecutar y cargar el archivo actualizado después. Se requiere --report-gh.
--report-gh-history-window 2.4.0 Establece el periodo de retención del historial de 1 a 90 días. El valor predeterminado es de 30 días. Se requiere --report-gh-history.
--report-gh-slow-test-notices 2.3.0 Habilita o deshabilita los avisos de pruebas lentas. Los valores válidos son on (valor predeterminado) y off. Se requiere --report-gh.
--report-gh-slow-test-threshold 2.3.0 La duración durante la que puede ejecutarse una prueba antes de que se emita un aviso de prueba lenta. Acepta un número mínimo de segundos o un valor con un sufijo de unidad como 90s, 2mo 1.5h. El valor predeterminado es 60s. Se requiere --report-gh.

A partir de MTP 2.4.0, Acciones de GitHub Markdown resume los resultados agregados en todos los módulos de prueba de una dotnet test invocación. Al habilitar también la cobertura de código, seleccione coverage o all para incluir recuentos cubiertos y totales, porcentajes, resultados de umbral y un indicador cuando los datos de cobertura sean parciales.

Los detalles del fallo se mantienen dentro de los límites establecidos para el mensaje, la pila, el recuento de fallos y el resumen completo. Cuando el contenido supera un límite, el informe trunca o lo condensa y indica esa reducción en el resumen.