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.

De MSTest SDK detecteert en voert uw tests uit met behulp van de MSTest runner.

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

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

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

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

</Project>

Notitie

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

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

</Project>

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

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

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.Sdk, kiest u voor het gebruik van de MSTest runner, inclusief met 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 in plaats daarvan de oude integraties en hulpprogramma's gebruiken MSTest.Sdk en behouden door de runner over te schakelen.

Selecteer de runner

MSTest SDK is standaard afhankelijk van MSTest runner, maar u kunt overschakelen naar VSTestvoegen.

MSTest runner uitbreiden

U kunt de ervaring aanpassen MSTest runner via een set NuGet-pakketextensies. MsTest SDK introduceert twee functies om deze ervaring te vereenvoudigen en te verbeteren:

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

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

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

</Project>
Extensie/profiel Geen Verstek AllMicrosoft
code-dekking ✔️ ✔️
Crashdump ✔️
Vervalsingen ✔️ (MSTest.Sdk 3.7.0+)
hangdump ✔️
Hot Reload ✔️
opnieuw proberen ✔️
Trx ✔️ ✔️

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

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

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

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

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

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

</Project>

Functies

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

Testen met .NET Aspire

.NET Aspire is een beoordelde, cloudklare stack voor het bouwen van waarneembare, productieklare, gedistribueerde toepassingen. .NET Aspire wordt geleverd via een verzameling NuGet-pakketten die specifieke cloudeigen problemen verwerken. Zie de .NET Aspire-documenten voor meer informatie.

Notitie

Deze functie is beschikbaar via MSTest.Sdk 3.4.0

Door de eigenschap EnableAspireTesting in te truestellen op , kunt u alle afhankelijkheden en standaardrichtlijnen using die u nodig hebt voor het testen met Aspire en MSTest.

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

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

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

</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 in te stellen op true u kunt alle afhankelijkheden en standaardrichtlijnen using opnemen waarmee u moet testen Playwright en MSTest.

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

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

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

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

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 MSTest runner gebruikmaakt van (standaard) en als u afhankelijk bent van dotnet test het uitvoeren van uw tests. Zie dotnet-testintegratie voor meer informatie en om inzicht te krijgen in alle vereiste wijzigingen.

Hier volgt een voorbeeldupdate bij het gebruik van de DotNetCoreCLI taak in 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"'

Bekende beperkingen

De NuGet-opgegeven MSBuild SDK's (inclusief MSTest.Sdk) hebben beperkte ondersteuning voor hulpprogramma's als het gaat om het bijwerken van de versie, wat betekent dat de gebruikelijke NuGet-update en Visual Studio UI voor het beheren van NuGet-pakketten niet werkt zoals verwacht. Zie dit probleem voor nadere details: NuGet#13127.

Notitie

Deze beperking is niet specifiek voor MSTest SDK, maar geldt voor iedere NuGet-geleverde MSBuild SDK. Dependabot verwerkt het bijwerken van de versie in het global.json bestand, maar u moet de versie handmatig bijwerken in het projectbestand.

Zie ook