MSTest SDK-configuratie

In dit artikel worden geavanceerde configuratieopties voor MSTest.Sdk behandeld. Zie Get started met MSTest voor basisinstellingen en om aan de slag te gaan.

Belangrijk

MSTest.Sdk maakt standaard gebruik van de MSTest runner met MTP, inclusief dotnet-test. Hiervoor moet u uw CI- en lokale CLI-aanroepen wijzigen, wat ook van invloed is op de beschikbare vermeldingen van de .runsettings. U kunt de oude integraties en hulpprogramma's behouden door over te schakelen naar VSTest.

MSTest.Sdk stelt EnableMSTestRunner standaard in en TestingPlatformDotnetTestSupport op true. Zie Testen met dotnet-test voor meer informatie over dotnet-test en de verschillende modi.

Helperbibliotheken voor hulpprogramma's testen

Als de project die gebruikmaakt van MSTest.Sdk een helperbibliotheek voor testhulpprogramma's is en zelf geen runnable tests bevat, moet de project <IsTestApplication>false</IsTestApplication> hebben.

Selecteer de loper

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

MTP uitbreiden

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

Microsoft. Testing.Platform-profiel

Met het concept van profiles kunt u de standaardset configuraties en extensies selecteren die worden toegepast op uw test-project.

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 zijn verzonden door Microsoft (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/4.1.0">

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

</Project>
Extensie/Profiel Geen Verstek AllMicrosoft
Code Coverage ✔️ ✔️
Crashdump ✔️
Fakes ✔️¹
hangdump ✔️
Hot Reload ✔️
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 (NuGet-pakket Microsoft.Testing.Extensions.CrashDump) wilt inschakelen, kunt u de volgende eigenschap EnableMicrosoftTestingExtensionsCrashDump instellen op true:

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

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

</Project>

Zie MTP-functies 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/4.1.0">

    <PropertyGroup>
        <TargetFramework>net10.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 bevooroordelde, cloudklare stack voor het bouwen van waarneembare, 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/4.1.0">

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

    <PropertyGroup>
        <TargetFramework>net10.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 vermelding Sdk="Microsoft.NET.Sdk" boven aan 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": "4.1.0"
    }
}

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 MTP (standaard) gebruikt 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.

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

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

Bekende beperkingen

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

Zie ook