Delen via


Overzicht van MSTest SDK

MSTest.Sdk is een MSBuild-project-SDK voor het bouwen van MSTest-apps. Het is echter mogelijk om een MSTest-app te bouwen zonder deze SDK, maar de MSTest SDK is:

  • Afgestemd op het bieden van een eersteklas ervaring voor het testen met MSTest.
  • Het aanbevolen doel voor de meeste gebruikers.
  • Eenvoudig te configureren voor andere gebruikers.

Standaard detecteert en voert de MSTest SDK uw tests uit met behulp van de MSTest runner voor Microsoft.Testing.Platform. U kunt overschakelen naar VSTest door op te geven <UseVSTest>true</UseVSTest>

U kunt MSTest.Sdk inschakelen in een project door het Sdk kenmerk van het Project knooppunt van uw project bij te werken:

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

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

</Project>

Notitie

/3.10.2 wordt als voorbeeld gegeven en kan worden vervangen door een nieuwere versie.

Om de verwerking van versies te vereenvoudigen, raden we u aan om de SDK-versie op oplossingsniveau in te stellen met behulp van het global.json-bestand . Uw projectbestand ziet er bijvoorbeeld als volgt uit:

<Project Sdk="MSTest.Sdk">

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

</Project>

Geef vervolgens de MSTest.Sdk versie in het global.json-bestand als volgt op:

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

Zie MSBuild-project-SDK's gebruiken voor meer informatie.

Wanneer u build het project uitvoert, worden alle benodigde onderdelen hersteld en geïnstalleerd met behulp van de standaard NuGet-werkstroom die door uw project is ingesteld.

U hebt niets anders nodig om uw tests te bouwen en uit te voeren en u kunt dezelfde hulpprogramma's gebruiken (bijvoorbeeld dotnet test Visual Studio) die worden gebruikt door een 'klassiek' MSTest-project.

Belangrijk

Door over te schakelen naar de MSTest.Sdkoptie , kiest u ervoor om msTest runner te gebruiken (hiermee schakelt u Microsoft.Testing.Platform voor MSTest) in, inclusief dotnet-test. Hiervoor moeten uw CI- en lokale CLI-aanroepen worden gewijzigd en is dit ook van invloed op de beschikbare vermeldingen van de .runsettings. U kunt MSTest.Sdk gebruiken en toch de oude integraties en hulpprogramma's behouden door de runner te vervangen. MSTest.Sdk stelt standaard in EnableMSTestRunner en TestingPlatformDotnetTestSupport op waar. Zie Testen met dotnet-test voor meer informatie over dotnet-test en de verschillende modi voor het uitvoeren van Microsoft.Testing.Platform.

Helperbibliotheken voor hulpprogramma's testen

Als het project dat gebruikmaakt van MSTest.Sdk bedoeld is als een hulpprogramma-bibliotheek voor testdoeleinden en zelf geen uitvoerbare tests bevat, dan moet het project over <IsTestApplication>false</IsTestApplication> beschikken.

Selecteer de loper

MSTest SDK is standaard afhankelijk van Microsoft.Testing.Platform, maar u kunt overschakelen naar VSTest- door de eigenschap <UseVSTest>true</UseVSTest>toe te voegen.

Microsoft.Testing.Platform uitbreiden

U kunt de Microsoft.Testing.Platform gebruikerservaring door middel van een reeks NuGet-pakketextensies aanpassen. MsTest SDK introduceert twee functies om deze ervaring te vereenvoudigen en te verbeteren:

Microsoft.Testing.Platform-profiel

Met het concept van profielen kunt u de standaardset configuraties en extensies selecteren die worden toegepast op uw testproject.

U kunt het profiel instellen met behulp van de eigenschap TestingExtensionsProfile met een van de volgende drie profielen:

  • None - Er zijn geen extensies ingeschakeld.

  • Default - Hiermee schakelt u de aanbevolen extensies in voor deze versie van MSTest.SDK. Dit is de standaardinstelling wanneer de eigenschap niet expliciet is ingesteld.

    Hiermee worden de volgende extensies ingeschakeld:

  • AllMicrosoft - Schakel alle extensies in die door Microsoft worden verzonden (inclusief extensies met een beperkende licentie).

    Hiermee worden de volgende extensies ingeschakeld:

Hier volgt een volledig voorbeeld met behulp van het None profiel:

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

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

</Project>
Extensie/Profiel Geen Verstek AllMicrosoft
Codedekking ✔️ ✔️
Crashdump ✔️
Vervalsingen ✔️¹
hangdump ✔️
Dynamisch opnieuw laden ✔️
opnieuw proberen ✔️
Trx ✔️ ✔️
AzureDevOpsReport ✔️²

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

Extensies in- of uitschakelen

Extensies kunnen worden ingeschakeld en uitgeschakeld door MSBuild-eigenschappen met het patroon Enable[NugetPackageNameWithoutDots].

Als u bijvoorbeeld de crashdumpextensie wilt inschakelen (NuGet-pakket Microsoft.Testing.Extensions.CrashDump), kunt u de volgende eigenschap EnableMicrosoftTestingExtensionsCrashDump instellen op true:

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

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

</Project>

Zie Microsoft.Testing.Platform-extensies voor een lijst met alle beschikbare extensies.

Waarschuwing

Het is belangrijk om de licentievoorwaarden voor elke extensie te bekijken, omdat deze kunnen variëren.

Ingeschakelde en uitgeschakelde extensies worden gecombineerd met de extensies die worden geleverd door uw geselecteerde extensieprofiel.

Dit eigenschapspatroon kan worden gebruikt om een extra extensie boven op het impliciete Default profiel in te schakelen (zoals te zien is in het vorige CrashDumpExtension-voorbeeld).

U kunt ook een extensie uitschakelen die afkomstig is van het geselecteerde profiel. Schakel bijvoorbeeld de MS Code Coverage extensie uit door het volgende in te stellen <EnableMicrosoftTestingExtensionsCodeCoverage>false</EnableMicrosoftTestingExtensionsCodeCoverage>:

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

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

</Project>

Functies

Naast de selectie van de runner en runner-specifieke extensies, biedt MSTest.Sdk u ook aanvullende functies om uw testervaring te vereenvoudigen en te verbeteren.

Testen met Aspire

Aspire is een meningsvormende, cloud-ready stack voor het bouwen van observeerbare, productieklare, gedistribueerde toepassingen. Aspire wordt geleverd via een verzameling NuGet-pakketten die specifieke cloudeigen problemen verwerken. Zie de Aspire-documenten voor meer informatie.

Notitie

Deze functie is beschikbaar via MSTest.Sdk 3.4.0.

Door de eigenschap EnableAspireTesting in te stellen op true, kunt u alle benodigde afhankelijkheden en standaardrichtlijnen using voor het testen met Aspire en MSTest verkrijgen.

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

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

</Project>

Testen met Playwright

Playwright maakt betrouwbare end-to-end-tests mogelijk voor moderne web-apps. Zie de officiële Playwright-documenten voor meer informatie.

Notitie

Deze functie is beschikbaar via MSTest.Sdk 3.4.0.

Door de eigenschap EnablePlaywright op true in te stellen, kunt u alle vereiste afhankelijkheden en standaardrichtlijnen using opnemen die nodig zijn voor het testen met Playwright en MSTest.

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

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

</Project>

Migreren naar MSTest SDK

Houd rekening met de volgende stappen die nodig zijn om te migreren naar de MSTest SDK.

Uw project bijwerken

Wanneer u een bestaand MSTest-testproject migreert naar MSTest SDK, vervangt u eerst de Sdk="Microsoft.NET.Sdk" vermelding bovenaan uw testproject door Sdk="MSTest.Sdk"

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

Voeg de versie toe aan uw global.json:

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

Vervolgens kunt u beginnen met het vereenvoudigen van uw project.

Standaardeigenschappen verwijderen:

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

Standaardpakketverwijzingen verwijderen:

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

Ten slotte kunt u, op basis van het extensiesprofiel dat u gebruikt, ook enkele van de Microsoft.Testing.Extensions.* pakketten verwijderen.

Uw CI bijwerken

Nadat u uw projecten hebt bijgewerkt, moet u uw CI-configuratie bijwerken als u (standaard) Microsoft.Testing.Platform gebruikt en als u op dotnet test vertrouwt om uw tests uit te voeren. Zie dotnet-testintegratie voor meer informatie en om inzicht te krijgen in alle vereiste wijzigingen.

Als u de VSTest-modus van dotnet testgebruikt, volgt een voorbeeldupdate wanneer u de DotNetCoreCLI taak in Azure DevOps gebruikt:

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

Bekende beperkingen

De nuGet-opgegeven MSBuild SDK's (inclusief MSTest.Sdk) hebben beperkte ondersteuning voor hulpprogramma's als het gaat om het bijwerken van hun versie, wat betekent dat de gebruikelijke NuGet-update en Visual Studio UI voor het beheren van NuGet-pakketten niet werkt zoals verwacht. U moet de versie in het global.json bestand en in het projectbestand handmatig bijwerken. (Dit geldt zelfs als u Dependabot gebruikt vanwege problemen met dependabot-core#12824 en dependabot-core#8615.)

Zie ook