Dela via


Skapa anpassade tillägg

Den här artikeln är avsedd för utvecklare som skapar anpassade testramverk eller tillägg för Microsoft.Testing.Platform.

Not

Fullständig exempelkod finns i TestingPlatformExamples på Microsoft Test Framework-lagringsplatsen.

Sammanfattning av tilläggspunkt

Utökningspunkt In-/utgående process Avsikt
ITestFramework Pågående Det enda obligatoriska tillägget. Identifierar och kör tester.
IDataConsumer Pågående Prenumererar på och bearbetar testdata från meddelandebussen.
ITestSessionLifetimeHandler Pågående Kör kod före och efter en testsession.
ITestApplicationLifecycleCallbacks Pågående Kör kod i början och i slutet av testvärden.
ICommandLineOptionsProvider Both Lägger till anpassade kommandoradsalternativ.
ITestHostEnvironmentVariableProvider utanför processen Ställer in miljövariabler innan testhosten startar.
ITestHostProcessLifetimeHandler utanför processen Övervakar testvärdprocessen externt.

In-process vs out-of-process utvidgningar

Tillägg kategoriseras i två typer:

  • Processtillägg körs i testvärdprocessen, tillsammans med testramverket. Registrera dem via builder.TestHost:

    var builder = await TestApplication.CreateBuilderAsync(args);
    builder.TestHost.AddXXX(/* ... */);
    
  • Out-of-process-tillägg körs i en separat process som observerar testvärden. Registrera dem via builder.TestHostControllers:

    var builder = await TestApplication.CreateBuilderAsync(args);
    builder.TestHostControllers.AddXXX(/* ... */);
    

Out-of-process-tillägg behövs när:

  • Du måste ange miljöinställningar innan testhosten startar.
  • Du måste övervaka testvärden externt eftersom användarkoden kan orsaka att processen kraschar eller hänger sig.

När ett tillägg som inte är i processen har registrerats startar plattformen en andra process automatiskt.

Gränssnittet IExtension

Alla tilläggspunkter ärver från IExtension, vilket ger möjlighet till identifiering och val av att delta eller avstå:

public interface IExtension
{
    string Uid { get; }
    string Version { get; }
    string DisplayName { get; }
    string Description { get; }
    Task<bool> IsEnabledAsync();
}
  • Uid: En unik identifierare för tillägget. Välj ett unikt värde för att undvika konflikter.
  • Version: Versionen av tillägget med hjälp av semantisk versionshantering.
  • DisplayName: Ett användarvänligt namn som visas i loggar och --info utdata.
  • Description: En beskrivning som visas i --info utdata.
  • IsEnabledAsync(): Gå tillbaka false för att exkludera tillägget från sessionen. Vanligtvis baseras beslut på konfigurations- eller kommandoradsalternativ.
  • Skapa ett testramverk: Skapa en anpassad ITestFramework implementering, hantera begäranden och rapportera testresultat.
  • Bygga tillägg: Skapa tillägg inom process och utanför process, såsom datakonsumenter, sessionshanterare och processövervakare.
  • VSTest Bridge: Förenkla migreringen av befintliga VSTest-baserade testramverk till Microsoft.Testing.Platform.
  • Funktioner: Deklarera och fråga efter ramverk och tilläggsfunktioner.
  • Services: Åtkomstkonfiguration, loggning, meddelandebuss och andra plattformstjänster.