Dela via


MSTest SDK-konfiguration

Den här artikeln beskriver avancerade konfigurationsalternativ för MSTest.Sdk. Grundläggande konfiguration och kom igång finns i Komma igång med MSTest.

Viktigt!

Som standard använder MSTest.Sdk MSTest-löparen med Microsoft.Testing.Platform, inklusive med dotnet-test. Detta kräver att du ändrar dina CI- och lokala CLI-anrop och även påverkar de tillgängliga posterna i .runsettings. Du kan behålla de gamla integreringarna och verktygen genom att byta till VSTest.

MSTest.Sdk ställer in EnableMSTestRunner och TestingPlatformDotnetTestSupport till true som standard. Mer information om dotnet-test och dess olika lägen 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/4.1.0">

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

</Project>
Förlängning/Profil Ingen Förval AllMicrosoft
kodtäckning ✔️ ✔️
Kraschdump ✔️
Förfalskningar ✔️¹
Hängdump ✔️
Snabb inläsning ✔️
försök igen ✔️
Trx ✔️ ✔️
AzureDevOpsReport ✔️²

¹ MSTest.Sdk 3.7.0+ ² MSTest.Sdk 3.11.0+

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/4.1.0">

<PropertyGroup>
    <TargetFramework>net10.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/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.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/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.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/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.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": "4.1.0"
    }
}

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 i dotnet test, här är ett exempel på en uppdatering när du använder DotNetCoreCLI för 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. Du måste uppdatera versionen manuellt i global.json filen och i projektfilen. (Detta gäller även om du använder Dependabot på grund av problem med dependabot-core#12824 och dependabot-core#8615.)

Se även