Dela via


Översikt över MSTest runner

MSTest-löparen är ett enkelt och bärbart alternativ till VSTest för att köra tester i alla kontexter (till exempel CI-pipelines (kontinuerlig integrering), CLI, Visual Studio Test Explorer och VS Code Text Explorer). MSTest-löparen är inbäddad direkt i dina MSTest-testprojekt och det finns inga andra appberoenden, till exempel eller dotnet test, som vstest.console behövs för att köra dina tester.

MSTest-löparen är öppen källkod och bygger på ett Microsoft.Testing.Platform bibliotek. Du hittar Microsoft.Testing.Platform kod på GitHub-lagringsplatsen microsoft/testfx . MSTest-löparen levereras med MSTest in 3.2.0-preview.23623.1 eller senare.

Aktivera MSTest runner i ett MSTest-projekt

Vi rekommenderar att du använder MSTest SDK eftersom det avsevärt förenklar projektkonfigurationen och uppdateringen av projektet, och det säkerställer en korrekt justering av versionerna av plattformen (MSTest runner) och dess tillägg.

När du använder MSTest SDKär du som standard anmäld till att använda MSTest runner.

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

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

</Project>

Du kan också aktivera MSTest runner genom att lägga till EnableMSTestRunner Exe egenskapen och inställningen OutputType i projektfilen. Du måste också se till att du använder MSTest 3.2.0-preview.23623.1 eller senare.

Överväg följande exempelprojektfil:

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

Konfigurationer och filter

.runsettings

MSTest-löparen stöder körningar via kommandoradsalternativet --settings. Den fullständiga listan över MSTest-poster som stöds finns i Konfigurera MSTest: Runsettings. Följande kommandon visar olika användningsexempel.

Använda dotnet run:

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

Använda dotnet exec:

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

-eller-

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

Använd den körbara filen:

Contoso.MyTests.exe --settings config.runsettings

Testfilter

Du kan ange testfiltret sömlöst med hjälp av kommandoradsalternativet --filter. Följande kommandon visar några exempel.

Använda dotnet run:

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

Använda dotnet exec:

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

-eller-

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

Använd den körbara filen:

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