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.

MSTest SDK identifierar och kör dina tester med hjälp av MSTest-löparen.

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.6.3">

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

    <!-- references to the code to test -->

</Project>

Kommentar

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

    <!-- references to the code to test -->

</Project>

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

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

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

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

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, 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 integreringarna och verktygen genom att i stället byta löpare.

Välj löparen

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

Utöka MSTest runner

Du kan anpassa MSTest runner 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:

MSTest runner-profil

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

Du kan ange profilen TestingExtensionsProfile med egenskapen med någon av följande tre profiler:

  • None – Inga tillägg är aktiverade.

  • Default – Aktiverar de rekommenderade tilläggen för den här versionen av MSTest.SDK. Detta är standardvärdet när egenskapen inte anges explicit.

    Aktiverar följande tillägg:

  • AllMicrosoft – Aktivera alla tillägg som levereras av Microsoft (inklusive tillägg med en begränsande licens).

    Aktiverar följande tillägg:

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

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

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

    <!-- references to the code to test -->

</Project>
Tillägg/profil Ingen Förval AllMicrosoft
kodtäckning ✔️ ✔️
Kraschdump ✔️
Förfalskningar ✔️ (MSTest.Sdk 3.7.0+)
Hang Dump ✔️
Het omladdning ✔️
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.6.3">

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

<!-- references to the code to test -->

</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.6.3">

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

    <!-- references to the code to test -->

</Project>

Funktioner

Förutom valet av löpare och löparspecifika tillägg, MSTest.Sdk finns även ytterligare funktioner för att förenkla och förbättra din testupplevelse.

Testa med .NET Aspire

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

Kommentar

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>

    <!-- references to the code to test -->

</Project>

Testa med dramatiker

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

Kommentar

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>

    <!-- references to the code to test -->

</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.6.3"
    }
}

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 MSTest runner (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.

Här är en exempeluppdatering när du använder DotNetCoreCLI uppgiften i Azure DevOps:

\- task: DotNetCoreCLI@2
  inputs:
    command: 'test'
    projects: '**/**.sln'
-    arguments: '--configuration Release'
+    arguments: '--configuration Release -p:TestingPlatformCommandLineArguments="--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. Mer information finns i det här problemet: NuGet#13127.

Kommentar

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