Dela via


Översikt över MSTest SDK

MSTest.Sdk är ett MSBuild-projekt-SDK för att skapa MSTest-appar. Det är möjligt att skapa en MSTest-app utan denna SDK, men MSTest SDK är:

  • Skräddarsydd för att ge en förstklassig upplevelse för testning med MSTest.
  • Det rekommenderade målet för de flesta användare.
  • Lätt att konfigurera för andra användare.

Som standard identifierar och kör MSTest SDK dina tester med hjälp av MSTest-löparen för Microsoft.Testing.Platform. Du kan växla till att använda VSTest genom att ange <UseVSTest>true</UseVSTest>

Du kan aktivera MSTest.Sdk i ett projekt genom att helt enkelt uppdatera Sdk attributet för noden i Project projektet:

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

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

</Project>

Anteckning

/3.10.2 ges som exempel och kan ersättas med alla nyare versioner.

För att förenkla hanteringen av versioner rekommenderar vi att du ställer in SDK-versionen på lösningsnivå med hjälp av filen global.json . Projektfilen skulle till exempel se ut så här:

<Project Sdk="MSTest.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

</Project>

Ange sedan MSTest.Sdk versionen i filen global.json enligt följande:

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.10.2"
    }
}

Mer information finns i Använda MSBuild-projekt-SDK:er.

När du build kör projektet, återställs och installeras alla nödvändiga komponenter med hjälp av det standardarbetsflöde för NuGet som projektet har angett.

Du behöver inget annat för att skapa och köra dina tester och du kan använda samma verktyg (till exempel dotnet test eller Visual Studio) som används av ett "klassiskt" MSTest-projekt.

Viktigt!

Genom att växla till MSTest.Sdkväljer du att använda MSTest-löparen (aktiverar Microsoft.Testing.Platform för MSTest), inklusive med dotnet-test. Det kräver att du ändrar dina CI- och lokala CLI-anrop och även påverkar de tillgängliga posterna i .runsettings. Du kan använda MSTest.Sdk och fortfarande behålla de gamla integrationerna och verktygen genom att istället byta runner. Som standard ställer MSTest.Sdk in EnableMSTestRunner och TestingPlatformDotnetTestSupport till sant. Mer information om dotnet-test och dess olika lägen för att köra Microsoft.Testing.Platform finns i Testa med dotnet-test.

Testa hjälpbibliotek för verktyg

Om projektet som använder MSTest.Sdk är avsett att vara ett hjälpbibliotek för testverktyg och inte i sig innehåller några körbara tester, bör projektet ha <IsTestApplication>false</IsTestApplication>.

Välj löparen

Som standard förlitar sig MSTest SDK på Microsoft.Testing.Platform, men du kan växla till VSTest genom att lägga till egenskapen <UseVSTest>true</UseVSTest>.

Utöka Microsoft.Testing.Platform

Du kan anpassa Microsoft.Testing.Platform upplevelsen via en uppsättning NuGet-pakettillägg. För att förenkla och förbättra den här upplevelsen introducerar MSTest SDK två funktioner:

Profil för Microsoft.Testing.Platform

Med profilkonceptet kan du välja standarduppsättningen med konfigurationer och tillägg som ska tillämpas på testprojektet.

Du kan ställa in profilen med hjälp av egenskapen TestingExtensionsProfile och välja en av följande tre profiler:

Här är ett fullständigt exempel med hjälp av profilen None :

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

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <TestingExtensionsProfile>None</TestingExtensionsProfile>
    </PropertyGroup>

</Project>
Förlängning/Profil Ingen Förval AllMicrosoft
kodtäckning ✔️ ✔️
Kraschdump ✔️
Förfalskningar ✔️ (MSTest.Sdk 3.7.0+)
Hängdump ✔️
Snabb inläsning ✔️
försök igen ✔️
Trx ✔️ ✔️

Aktivera eller inaktivera tillägg

Tillägg kan aktiveras och inaktiveras av MSBuild-egenskaper med mönstret Enable[NugetPackageNameWithoutDots].

Om du till exempel vill aktivera kraschdumptillägget (NuGet-paketet Microsoft.Testing.Extensions.CrashDump) kan du använda följande egenskap EnableMicrosoftTestingExtensionsCrashDump inställd på true:

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

<PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <EnableMicrosoftTestingExtensionsCrashDump>true</EnableMicrosoftTestingExtensionsCrashDump>
</PropertyGroup>

</Project>

En lista över alla tillgängliga tillägg finns i Microsoft.Testing.Platform-tillägg.

Varning

Det är viktigt att granska licensvillkoren för varje tillägg eftersom de kan variera.

Aktiverade och inaktiverade tillägg kombineras med tilläggen som tillhandahålls av den valda tilläggsprofilen.

Det här egenskapsmönstret kan användas för att aktivera ytterligare ett tillägg ovanpå den implicita Default profilen (som du såg i föregående CrashDumpExtension-exempel).

Du kan också inaktivera ett tillägg som kommer från den valda profilen. Inaktivera MS Code Coverage till exempel tillägget genom att ange <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>:

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

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>
    </PropertyGroup>

</Project>

Funktioner

Förutom urvalet av löpare och löparspecifika tillägg, tillhandahåller MSTest.Sdk också funktioner för att ytterligare förenkla och förbättra din testupplevelse.

Testa med Aspire

Aspire är en åsiktsbaserad, molnklar stack för att skapa observerbara, produktionsklara, distribuerade program. Aspire levereras via en samling NuGet-paket som hanterar specifika molnbaserade problem. Mer information finns i Aspire-dokumenten.

Anteckning

Den här funktionen är tillgänglig från MSTest.Sdk 3.4.0

Genom att ange egenskapen EnableAspireTesting till truekan du ta med alla beroenden och standarddirektiv using som du behöver för testning med Aspire och MSTest.

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

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnableAspireTesting>true</EnableAspireTesting>
    </PropertyGroup>

</Project>

Testa med Playwright

Playwright möjliggör tillförlitlig testning från slutpunkt till slutpunkt för moderna webbappar. Mer information finns i de officiella dramatikerdokumenten.

Anteckning

Den här funktionen är tillgänglig från MSTest.Sdk 3.4.0

Genom att ställa in egenskapen EnablePlaywrighttrue kan du ta in alla beroenden och standarddirektiv using som du behöver för testning med Playwright och MSTest.

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

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <EnablePlaywright>true</EnablePlaywright>
    </PropertyGroup>

</Project>

Migrera till MSTest SDK

Överväg följande steg som krävs för att migrera till MSTest SDK.

Uppdatera projektet

När du migrerar ett befintligt MSTest-testprojekt till MSTest SDK börjar du med att Sdk="Microsoft.NET.Sdk" ersätta posten överst i testprojektet med Sdk="MSTest.Sdk"

- Sdk="Microsoft.NET.Sdk"
+ Sdk="MSTest.Sdk"

Lägg till versionen i global.json:

{
    "msbuild-sdks": {
        "MSTest.Sdk": "3.10.2"
    }
}

Du kan sedan börja förenkla projektet.

Ta bort standardegenskaper:

- <EnableMSTestRunner>true</EnableMSTestRunner>
- <OutputType>Exe</OutputType>
- <IsPackable>false</IsPackable>
- <IsTestProject>true</IsTestProject>

Ta bort standardpaketreferenser:

- <PackageReference Include="MSTest"
- <PackageReference Include="MSTest.TestFramework"
- <PackageReference Include="MSTest.TestAdapter"
- <PackageReference Include="MSTest.Analyzers"
- <PackageReference Include="Microsoft.NET.Test.Sdk"

Slutligen kan du, baserat på tilläggsprofilen som du använder, även ta bort några av paketen Microsoft.Testing.Extensions.* .

Uppdatera din CI

När du har uppdaterat dina projekt måste du uppdatera CI-konfigurationen om du använder Microsoft.Testing.Platform (standard) och om du förlitar dig på dotnet test att köra dina tester. Mer information och vägledning för din förståelse av alla nödvändiga ändringar finns i dotnet-testintegrering.

Om du använder VSTest-läget med dotnet test, här är ett exempel på en uppdatering när du använder DotNetCoreCLI-uppgiften i Azure DevOps:

\- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '**/**.sln'
-    arguments: '--configuration Release'
+    arguments: '--configuration Release -- --report-trx --results-directory $(Agent.TempDirectory) --coverage'

Kända begränsningar

NuGet-tillhandahållna MSBuild-SDK:er (inklusive MSTest.Sdk) har begränsat stöd för verktyg när det gäller att uppdatera sin version, vilket innebär att den vanliga NuGet-uppdateringen och Visual Studio-användargränssnittet för att hantera NuGet-paket inte fungerar som förväntat. Se denna fråga för mer information: NuGet#13127.

Anteckning

Den här begränsningen är inte specifik för MSTest SDK utan för alla NuGet-tillhandahållna MSBuild SDK. Dependabot hanterar uppdatering av versionen i global.json-filen, men du måste uppdatera versionen manuellt i projektfilen.

Se även