Sdílet prostřednictvím


Přehled msTest runneru

MSTest Runner je jednoduchá a přenosná alternativa K VSTest pro spouštění testů ve všech kontextech (například kanály kontinuální integrace (CI), rozhraní příkazového řádku, Průzkumníka testů sady Visual Studio a Průzkumníka textu VS Code). 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ů.

MsTest runner je open source a staví na knihovně Microsoft.Testing.Platform . Kód najdete Microsoft.Testing.Platform v úložišti Microsoft/testfx Na GitHubu. MsTest runner je součástí MSTest in 3.2.0-preview.23623.1 nebo novější.

Povolení msTest runneru 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.3.1">

  <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í OutputType do Exe souboru projektu. Musíte také zajistit, že používáte MSTest 3.2.0-preview.23623.1 nebo novější.

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>
    <OutputType>Exe</OutputType>

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

    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>
  </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
    -->
    <PackageReference Include="MSTest" Version="3.2.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é

Doporučujeme nastavit vlastnost EnableMSTestRunner v souboru Directory.Build.props místo souboru csproj, aby se zajistilo, že všechny testovací projekty ve vašem řešení používají msTest runner.

Konfigurace a filtry

.runsettings

MsTest runner podporuje runsettings prostřednictvím možnosti --settingspří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"