Compartir a través de


Uso de Microsoft.Testing.Platform con dotnet test

En este artículo se describe cómo usar dotnet test para ejecutar pruebas al usar Microsoft.Testing.Platform y las distintas opciones disponibles para configurar la salida de MSBuild generada al ejecutar pruebas a través de Microsoft.Testing.Platform.

En este artículo se muestra cómo usar dotnet test para ejecutar todas las pruebas de una solución (*.sln) que usa Microsoft.Testing.Platform.

Integración de dotnet test

El comando dotnet test es una manera de ejecutar pruebas desde soluciones, proyectos o ensamblados ya compilados. Microsoft.Testing.Platform se enlaza a esta infraestructura para proporcionar una manera unificada de ejecutar pruebas, especialmente al migrar de VSTest a Microsoft.Testing.Platform.

Integración de dotnet test: modo VSTest

Microsoft.Testing.Platform proporciona una capa de compatibilidad (VSTest Bridge) para trabajar con dotnet test sin problemas.

Las pruebas se pueden realizar mediante la ejecución de:

dotnet test

Esta capa ejecuta pruebas a través de VSTest y se integra con ella en el nivel adaptador del marco de pruebas de VSTest.

dotnet test: modo Microsoft.Testing.Platform

De forma predeterminada, VSTest se usa para ejecutar pruebas de Microsoft.Testing.Platform. Puede habilitar una Microsoft.Testing.Platform completa especificando la configuración de <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> en el archivo del proyecto. Esta configuración deshabilita VSTest y, gracias a la dependencia transitiva del paquete NuGet Microsoft.Testing.Platform.MSBuild, ejecuta directamente todos los proyectos de prueba habilitados por Microsoft.Testing.Platform en la solución. Funciona sin problemas si se pasa un proyecto de prueba directa de Microsoft.Testing.Platform.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <!-- Add this to your project file. -->
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

  </PropertyGroup>

  <!-- ... -->

</Project>

En este modo, puede proporcionar parámetros adicionales que se utilizan para llamar a la aplicación de prueba de una de las siguientes maneras:

  • A partir de la versión 1.4 de Microsoft.Testing.Platform (incluida con la versión 3.6 de MSTest), puede colocar opciones después del doble guion -- en la línea de comandos:

    dotnet test -- --minimum-expected-tests 10
    
  • Mediante el uso de la propiedad de MSBuild TestingPlatformCommandLineArguments en la línea de comandos:

    dotnet test -p:TestingPlatformCommandLineArguments="--minimum-expected-tests 10"
    

    O en el archivo del proyecto:

    <PropertyGroup>
      ...
      <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
    </PropertyGroup>
    

Opciones adicionales de MSBuild

La integración de MSBuild proporciona opciones que se pueden especificar en el archivo de proyecto o a través de propiedades globales en la línea de comandos, como -p:TestingPlatformShowTestsFailure=true.

Estas son las opciones disponibles:

Mostrar error por prueba

De forma predeterminada, se resumen los errores de prueba en un archivo .log y se notifica un único error por proyecto de prueba a MSBuild.

Para mostrar los errores por prueba fallida, especifique -p:TestingPlatformShowTestsFailure=true en la línea de comandos o agregue la propiedad <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure> al archivo del proyecto.

En la línea de comandos:

dotnet test -p:TestingPlatformShowTestsFailure=true

O en el archivo del proyecto:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>

  </PropertyGroup>

  <!-- ... -->

</Project>

Mostrar la salida completa de la plataforma

De forma predeterminada, todas las salidas de la consola que escribe el ejecutable de prueba subyacente se capturan y se ocultan al usuario. Esto incluye el banner, la información de la versión y la información de la prueba con formato.

Para mostrar esta información junto con la salida de MSBuild, use <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>.

Esta opción no afecta a cómo el marco de pruebas captura la salida del usuario escrita por Console.WriteLine ni a otras formas similares de escribir en la consola.

En la línea de comandos:

dotnet test -p:TestingPlatformCaptureOutput=false

O en el archivo del proyecto:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>

    <OutputType>Exe</OutputType>
    <EnableMSTestRunner>true</EnableMSTestRunner>

    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!-- Add this to your project file. -->
    <TestingPlatformCaptureOutput>false</TestingPlatformCaptureOutput>

  </PropertyGroup>

  <!-- ... -->

</Project>