Compartir a través de


Ejecución de pruebas con MSTest

Hay varias maneras de ejecutar pruebas de MSTest en función de las necesidades. Puede ejecutar pruebas desde un IDE (por ejemplo, Visual Studio, Visual Studio Code o JetBrains Rider), desde la línea de comandos, o bien desde un servicio de CI (como Acciones de GitHub o Azure DevOps).

Históricamente, MSTest dependía de VSTest para ejecutar pruebas en todos los contextos, pero a partir de la versión 3.2.0, MSTest tiene su propio ejecutor de pruebas. Este nuevo ejecutor es más ligero y más rápido que VSTest, y es la manera recomendada de ejecutar pruebas de MSTest.

VSTest frente a Microsoft.Testing.Platform (MTP)

MSTest admite la ejecución de pruebas con VSTest y Microsoft.Testing.Platform (MTP). La compatibilidad con MTP se basa en el ejecutor de MSTest, que puede ejecutar pruebas en todos los contextos (por ejemplo, canalizaciones de integración continua (CI), CLI, Explorador de pruebas de Visual Studio y Explorador de texto de VS Code. El ejecutor de MSTest se inserta directamente en los proyectos de prueba de MSTest y no hay otras dependencias de la aplicación, como vstest.console o dotnet test, necesarias para ejecutar las pruebas. Sin embargo, todavía puede ejecutar las pruebas mediante dotnet test.

El ejecutor de MSTest es de código abierto y se basa en la Microsoft.Testing.Platform biblioteca. Puede encontrar Microsoft.Testing.Platform código en el repositorio de GitHub microsoft/testfx . El ejecutor de pruebas MSTest viene incluido con MSTest in 3.2.0 o una versión más reciente.

Habilitación de Microsoft.Testing.Platform en un proyecto de MSTest

Se recomienda usar el SDK de MSTest , ya que simplifica considerablemente la configuración del proyecto y actualiza el proyecto, y garantiza una alineación adecuada de las versiones de la plataforma (Microsoft.Testing.Platform) y sus extensiones.

Cuando se usa MSTest SDK, de forma predeterminada se opta por usar Microsoft.Testing.Platform.

<Project Sdk="MSTest.Sdk/4.1.0">

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

</Project>

Como alternativa, puede habilitar el ejecutor de MSTest agregando la etiqueta EnableMSTestRunner y configurando OutputType a Exe en su archivo de proyecto. También debe asegurarse de que usted esté usando la versión MSTest 3.2.0 o más reciente. Se recomienda encarecidamente actualizar a la versión más reciente de MSTest disponible.

Considere el siguiente archivo de proyecto de ejemplo:

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

  <PropertyGroup>
    <!-- Enable Microsoft.Testing.Platform, this is an opt-in feature -->
    <EnableMSTestRunner>true</EnableMSTestRunner>
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>

    <!--
      Displays error on console in addition to the log file. Note that this feature comes with a performance impact.
      For more information, visit https://learn.microsoft.com/dotnet/core/testing/microsoft-testing-platform-integration-dotnet-test#show-failure-per-test
      -->
    <TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>

    <OutputType>Exe</OutputType>

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

  <ItemGroup>
    <!--
      MSTest meta package is the recommended way to reference MSTest.
      It's equivalent to referencing:
          Microsoft.NET.Test.Sdk
          MSTest.TestAdapter
          MSTest.TestFramework
          MSTest.Analyzers
      Starting with 3.8, it also includes:
          Microsoft.Testing.Extensions.TrxReport
          Microsoft.Testing.Extensions.CodeCoverage
    -->
    <PackageReference Include="MSTest" Version="4.1.0" />
  </ItemGroup>

</Project>

Sugerencia

Para asegurarse de que todos los proyectos de prueba de la solución usan el ejecutor de MSTest, establezca las EnableMSTestRunner propiedades y TestingPlatformDotnetTestSupport en el archivo Directory.Build.props en lugar de archivos de proyecto individuales.

Configuraciones y filtros

.runsettings

Microsoft.Testing.Platform admite runsettings a través de la opción --settingsde línea de comandos . Para obtener la lista completa de entradas de MSTest admitidas, consulte Configuración de MSTest: Runsettings. Los siguientes comandos muestran varios ejemplos de uso.

Uso de dotnet run:

dotnet run --project Contoso.MyTests -- --settings config.runsettings

Uso de dotnet exec:

dotnet exec Contoso.MyTests.dll --settings config.runsettings

O bien:

dotnet Contoso.MyTests.dll --settings config.runsettings

Usando el archivo ejecutable:

Contoso.MyTests.exe --settings config.runsettings

Filtro de pruebas

Puede proporcionar el filtro de pruebas sin problemas mediante la opción --filterde línea de comandos . Los siguientes comandos muestran algunos ejemplos.

Uso de dotnet run:

dotnet run --project Contoso.MyTests -- --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Uso de dotnet exec:

dotnet exec Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

O bien:

dotnet Contoso.MyTests.dll --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Usando el archivo ejecutable:

Contoso.MyTests.exe --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

Consulte también