Microsoft.Extensions-integratie

Deze extensies vormen een brug tussen Microsoft.Testing.Platform (MTP) en de Microsoft.Extensions.*-bibliotheken die uw toepassing al gebruikt, zodat platform- en extensieonderdelen via dezelfde infrastructuur verlopen als de rest van uw code. Voor elke extensie is een extra NuGet-pakket vereist, zoals beschreven in elke sectie.

Tip

Wanneer u Microsoft.Testing.Platform.MSBuild gebruikt, wordt het logboekpakket automatisch geregistreerd met een gegenereerd entry point. Het configuratiepakket vereist een exemplaar van IConfiguration, en het hostingpakket vereist ofwel TestingPlatformHostFactory of een aangepast startpunt, dus volg de secties over registratie.

Logboekregistratiebrug

De logboekbrug stuurt Microsoft.Testing.Platform-diagnostische logboeken door naar ILogger, zodat platform- en extensielogboeken via dezelfde Microsoft.Extensions.Logging-pijplijn lopen die uw toepassing al gebruikt. U kunt een bestaande loggingstack opnieuw gebruiken — Console, Debug, Serilog, Application Insights, OpenTelemetry of een aangepaste ILoggerProvider — zonder een aangepaste MTP-loggerprovider te hoeven schrijven. Deze extensie vereist het Microsoft.Testing.Extensions.Logging NuGet-pakket.

Note

Beschikbaar in MTP vanaf versie 2.3.0. Deze extensie is experimenteel en de opties en uitvoerindeling kunnen in een toekomstige versie veranderen.

De brug stuurt elk bericht alleen door wanneer de diagnostische logboekregistratie van het platform is ingeschakeld. Wanneer het effectieve logboekniveau van het platform is None (de standaardinstelling, tenzij u doorgeeft --diagnostic), wordt de configuratiedelegatie niet aangeroepen en wordt er geen logger factory gemaakt. Filters per categorie die u hebt ingesteld, ILoggingBuilder kunnen het effectieve diagnostische niveau van het platform beperken, maar ze kunnen het niet breder maken.

Handmatige registratie

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddMicrosoftExtensionsLogging(logging => logging.AddConsole());

Momentopname van configuratie

Het experimentele Microsoft.Testing.Extensions.Configuration-pakket voegt een alleen-lezen snapshot van een door de toepassing beheerde IConfiguration toe aan de configuratiepipeline van MTP.

Registreer de configuratie voordat u de testtoepassing bouwt:

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddMicrosoftExtensionsConfigurationSnapshot(configuration);

De momentopname maakt standaard gebruik van de volgorde 2. MTP-opdrachtregelwaarden (volgorde 0) en omgevingsvariabelen (volgorde 1) hebben voorrang, terwijl de momentopname voorrang heeft op testconfig.json (volgorde 3). Geef een andere volgorde door wanneer uw toepassing een andere prioriteit vereist.

MTP leest de momentopname wanneer BuildAsync de configuratiepijplijn bouwt. Latere wijzigingen en meldingen voor opnieuw laden worden niet doorgegeven. De aanroeper behoudt het eigendom van de configuratie, hiërarchische sleutels behouden het standaardscheidingsteken : en registratie is alleen van toepassing op het huidige proces. Een live configuratieobject steekt niet over in een afzonderlijk gestart controller- of testhostproces.

Host-integratie

Het experimentele Microsoft.Testing.Extensions.Hosting-pakket voert MTP uit binnen een IHost die eigendom is van de toepassing. De host blijft de composition root en beheert zijn serviceprovider, configuratie, logging, OpenTelemetry-providers, levenscyclus en opschoning.

Stel voor een gegenereerd toegangspunt TestingPlatformHostFactory in op een volledig gekwalificeerde statische methode die een nieuw, nog niet gestart Task<IHost> retourneert:

<TestingPlatformHostFactory>Contoso.Tests.TestHost.CreateHost</TestingPlatformHostFactory>

Stel TestingPlatformOpenTelemetryMode in op HostOwned wanneer de host de OpenTelemetry-providers beheert en het testproject verwijst naar Microsoft.Testing.Extensions.OpenTelemetry. Het gegenereerde ingangspunt maakt de host aan en ruimt deze op, behoudt zelfgeregistreerde extensies en omzeilt de factory voor de opdrachtregelopties --help en --info.

Voor een aangepast invoerpunt roept u RunTestingPlatformAsync aan op de host en registreert u het testframework via de callbackfunctie. De methode importeert een momentopname van de configuratie, stuurt MTP diagnostische gegevens door naar de host ILoggerFactory, start de host vóór MTP, koppelt annulering van de host en beller aan MTP, retourneert de MTP-afsluitcode en stopt de host in een finally blok. De aanroeper verwijdert de host nog steeds.

Houd standaarduitvoer vrij van opstart-, afsluit-, logboekregistratie- en exportberichten, omdat MTP deze gebruikt voor machineleesbare modi zoals --list-tests json, JSON-RPC servermodus en het dotnet test protocol. Vermijd ook exclusieve globale hulpbronnen in een hostfactory die wordt gebruikt met extensies voor procesherstart, omdat scenario's met een nieuwe poging, een crashdump of een hangdump de hostfactory mogelijk aanroepen in controller- en onderliggende processen.

Important

De configuratie- en hosting-API's maken gebruik van de TPEXP diagnostische id en kunnen in een toekomstige release veranderen. Ze zijn beschikbaar in MTP 2.5 preview-pakketten.