Compartir a través de


Compatibilidad con Microsoft.Testing.Platform en MSTest (controlador de MSTest)

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 dependencias de otras aplicaciones, 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 biblioteca de Microsoft.Testing.Platform. Puede encontrar el código Microsoft.Testing.Platform en el repositorio de GitHub de microsoft/testfx . El ejecutor de MSTest viene incluido con MSTest in 3.2.0 o una versión posterior.

Habilitación del ejecutor de MSTest en un proyecto de MSTest

Se recomienda utilizar el SDK de MSTest, ya que simplifica enormemente la configuración y la actualización del proyecto, y garantiza una alineación adecuada de las versiones de la plataforma (ejecutor de MSTest) y sus extensiones.

Cuando se usa MSTest SDK, de forma predeterminada se opta por usar el ejecutor de MSTest.

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

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

</Project>

Como alternativa, puede habilitar el ejecutor de MSTest añadiendo la propiedad EnableMSTestRunner y estableciendo OutputType en Exe en su archivo de proyecto. También debe asegurarse de que está utilizando MSTest 3.2.0 o una versión más nueva. 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 the MSTest runner, 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>net8.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="3.8.0" />

    <!--
      Coverlet collector isn't compatible with MSTest runner, you can
      either switch to Microsoft CodeCoverage (as shown below),
      or switch to be using coverlet global tool
      https://github.com/coverlet-coverage/coverlet#net-global-tool-guide-suffers-from-possible-known-issue
    -->
    <PackageReference Include="Microsoft.Testing.Extensions.CodeCoverage"
                      Version="17.10.1" />
  </ItemGroup>

</Project>

Sugerencia

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

Configuraciones y filtros

.runsettings

El ejecutor de MSTest admite el runsettings a través de la opción de línea de comandos --settings. 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

Usar dotnet exec:

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

O bien

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

Con el archivo ejecutable:

Contoso.MyTests.exe --settings config.runsettings

Filtro de pruebas

Puede proporcionar las pruebas de filtro sin problemas mediante la opción de línea de comandos --filter. 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"

Con el archivo ejecutable:

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