Ö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.Sdk
vä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:
Fakes (MSTest.Sdk 3.7.0+)
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 true
kan 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 EnablePlaywright
på true
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.