Delen via


Overzicht van Microsoft.Testing.Platform

Microsoft.Testing.Platform is een lichtgewicht en draagbaar alternatief voor VSTest voor het uitvoeren van tests in alle contexten, waaronder CI-pipelines, CLI, Visual Studio Test Explorer en VS Code Test Explorer. Microsoft.Testing.Platform is rechtstreeks in uw testprojecten ingesloten en er zijn geen andere app-afhankelijkheden, zoals vstest.console of dotnet test nodig om uw tests uit te voeren.

Aanbeveling

Als u hulp nodig hebt bij het kiezen tussen VSTest en Microsoft.Testing.Platform, begint u met het overzicht van testplatforms.

Gebruik dit artikel wanneer u al hebt besloten Om Microsoft.Testing.Platform te gebruiken en u wilt weten wat het model, de mogelijkheden en het operationele gedrag zijn.

Microsoft.Testing.Platform is open source. U vindt Microsoft.Testing.Platform code in microsoft/testfx GitHub opslagplaats.

Begin hier

Gebruik het volgende pad op basis van wat u hierna nodig hebt:

Microsoft.Testing.Platform-pijlers

Dit nieuwe testplatform is gebaseerd op de ervaring van het .NET Developer Experience Testing-team en is gericht op de uitdagingen die zijn opgetreden sinds de release van .NET Core in 2016. Hoewel er een hoog compatibiliteitsniveau is tussen het .NET Framework en de .NET Core/.NET, hebben sommige belangrijke functies zoals het invoegtoepassingssysteem en de nieuwe mogelijke vormfactoren van .NET compilaties het complex gemaakt om de nieuwe runtimefunctie te ontwikkelen of volledig te ondersteunen met het huidige VSTest-platform architectuur.

De belangrijkste factoren voor de ontwikkeling van het nieuwe testplatform worden in het volgende beschreven:

  • Determinisme: Ervoor zorgen dat dezelfde tests in verschillende contexten (lokaal, CI) hetzelfde resultaat opleveren. De nieuwe runtime is niet afhankelijk van reflectie of een andere dynamische .NET runtime-functie om een testuitvoering te coördineren.

  • Runtime transparantie: de testruntime interfereert niet met de code van het testframework, creëert geen geïsoleerde contexten zoals AppDomain of AssemblyLoadContext, en gebruikt geen reflectie of aangepaste assembly-resolvers.

  • Compilatietijdregistratie van extensies: Extensies, zoals testframeworks en in-/out-of-process-extensies, worden geregistreerd tijdens het compileren om determinisme te garanderen en om de detectie van inconsistenties te vergemakkelijken.

  • Zero-afhankelijkheden: De kern van het platform is één .NET assembly, Microsoft.Testing.Platform.dll, die geen andere afhankelijkheden heeft dan de ondersteunde runtimes.

  • Hostable: De testruntime kan worden gehost in elke .NET toepassing. Hoewel een consoletoepassing vaak wordt gebruikt om tests uit te voeren, kunt u een testtoepassing maken in elk type .NET toepassing. Hiermee kunt u tests uitvoeren binnen speciale contexten, zoals apparaten of browsers, waarbij er mogelijk beperkingen zijn.

  • Ondersteuning voor alle .NET formaten: Ondersteuning voor de huidige en toekomstige .NET formaten, inclusief Native AOT.

  • Performant-: het vinden van de juiste balans tussen functies en extensiepunten om te voorkomen dat de runtime wordt opgeblazen met niet-fundamentele code. Het nieuwe testplatform is ontworpen om een testuitvoering te 'coördineren' in plaats van implementatiedetails te verstrekken over hoe dat te doen.

  • Uitbreidbaar genoeg: het nieuwe platform is gebouwd op uitbreidbaarheidspunten om maximale aanpassing van runtime-uitvoering mogelijk te maken. Hiermee kunt u de testproceshost configureren, het testproces observeren en informatie van het testframework gebruiken binnen het testhostproces.

  • implementatie van één module: met de functie hostbaarheid kan één module worden geïmplementeerd, waarbij één compilatieresultaat kan worden gebruikt ter ondersteuning van alle uitbreidbaarheidspunten, zowel out-of-process als in-process, zonder dat er verschillende uitvoerbare modules hoeven te worden verzonden.

Ondersteunde testframeworks

Ondersteunde doelframeworks

Microsoft.Testing.Platform ondersteunt .NET (.NET 8 en hoger), .NET Framework (versie 4.6.2 en hoger) en is gericht op NETStandard 2.0 voor maximale compatibiliteit met andere runtimes.

Tests uitvoeren en fouten opsporen

Zie Run and debug tests voor gedetailleerde richtlijnen voor het uitvoeren en opsporen van fouten in MTP-testprojecten vanuit CLI, Visual Studio, Visual Studio Code en CI-pipelines.

Opties

Zie voor de volledige lijst met opdrachtregelopties voor het platform en de extensie microsoft.Testing.Platform CLI.

MSBuild-integratie

Het NuGet-pakket Microsoft.Testing.Platform.MSBuild biedt verschillende integraties voor Microsoft.Testing.Platform met MSBuild:

  • Ondersteuning voor dotnet test. Zie Testen met dotnet-test voor meer informatie.
  • Ondersteuning voor ProjectCapability vereist voor Visual Studio en Visual Studio Code Test Explorers.
  • Automatisch genereren van het toegangspunt (Main methode).
  • Automatisch genereren van het configuratiebestand.
  • Automatische detectie en registratie van geïnstalleerde extensiepakketten.

Wanneer dit pakket actief is (de standaardinstelling voor MSTest, NUnit en xUnit runners), is het installeren van een extensie NuGet-pakket alles wat nodig is. Extensies worden automatisch geregistreerd zonder codewijzigingen. Als u het automatisch gegenereerde toegangspunt uitschakelt door de instelling in te stellen <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>, moet u extensies handmatig registreren in uw Main methode. Op elke extensiepagina wordt de handmatige registratieoproep geregistreerd.

Notitie

Deze integratie werkt op een transitieve manier (een project die verwijst naar een andere project die naar dit pakket verwijst, gedraagt zich alsof het naar het pakket verwijst) en kan worden uitgeschakeld via de eigenschap IsTestingPlatformApplication MSBuild.

Zie ook