Sdílet prostřednictvím


Podpora microsoft.Testing.Platform v MSTest (MSTest runner)

MSTest podporuje spouštění testů s VSTest a Microsoft.Testing.Platform (MTP). Podpora MTP je založená na msTest runneru, který může spouštět testy ve všech kontextech (například v kanálech kontinuální integrace ( CI), CLI, Visual Studio Test Exploreru a VS Code Text Exploreru). MsTest runner je vložen přímo do vašich projektů testů MSTest a nejsou potřeba žádné další závislosti aplikace, například vstest.console nebo dotnet test, ke spuštění testů. Přesto však můžete testy spouštět pomocí dotnet test.

MsTest Runner je open source a vychází z knihovny Microsoft.Testing.Platform. Kód Microsoft.Testing.Platform najdete v úložišti microsoft/testfx GitHubu. MSTest runner je součástí MSTest in 3.2.0 nebo novější.

Povolit nástroj MSTest runner v projektu MSTest

Doporučuje se používat sadu MSTest SDK , protože výrazně zjednodušuje konfiguraci a aktualizaci projektu a zajišťuje správné sladění verzí platformy (MSTest runner) a jeho rozšíření.

Při použití MSTest SDKse ve výchozím nastavení přihlásíte k používání msTest runneru.

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

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

</Project>

Případně můžete povolit MSTest runner přidáním EnableMSTestRunner vlastnosti a nastavením OutputType na Exe ve vašem souboru projektu. Musíte také zajistit, že používáte MSTest 3.2.0 nebo novější. Důrazně doporučujeme aktualizovat na nejnovější dostupnou verzi MSTest.

Podívejte se na následující příklad souboru projektu:

<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>

Spropitné

Pokud chcete zajistit, aby všechny projekty testů ve vašem řešení používaly msTest runner, nastavte EnableMSTestRunner a TestingPlatformDotnetTestSupport vlastnosti v souboru Directory.Build.props místo jednotlivých souborů projektu.

Konfigurace a filtry

.runsettings

MSTest runner podporuje runsettings prostřednictvím možnosti příkazového řádku. Úplný seznam podporovaných položek MSTest naleznete v tématu Konfigurace MSTest: Runsettings. Následující příkazy ukazují různé příklady použití.

Pomocí dotnet run:

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

Pomocí dotnet exec:

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

nebo

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

Použití spustitelného souboru:

Contoso.MyTests.exe --settings config.runsettings

Filtr testů

Filtr testů můžete bezproblémově zadat pomocí možnosti --filterpříkazového řádku . Následující příkazy ukazují některé příklady.

Pomocí dotnet run:

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

Pomocí dotnet exec:

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

nebo

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

Použití spustitelného souboru:

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