Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ces extensions pont Microsoft. Testing.Platform (MTP) vers les Microsoft.Extensions.* bibliothèques que votre application utilise déjà. Par conséquent, les composants de plateforme et d’extension transitent par la même infrastructure que le reste de votre code. Chaque extension nécessite un package NuGet supplémentaire, comme décrit dans chaque section.
Tip
Lors de l’utilisation de Microsoft. Testing.Platform.MSBuild, le package de journalisation est enregistré automatiquement avec un point d’entrée généré. Le package de configuration nécessite une IConfiguration instance et le package d’hébergement nécessite soit TestingPlatformHostFactory un point d’entrée personnalisé, donc suivez leurs sections d’inscription.
Pont de journalisation
Le pont de journalisation transmet les journaux de diagnostic de Microsoft.Testing.Platform à ILogger, de sorte que les journaux de la plateforme et des extensions transitent par le même pipeline Microsoft.Extensions.Logging que votre application utilise déjà. Vous pouvez réutiliser une pile de journalisation existante (Console, Debug, Serilog, Application Insights, OpenTelemetry ou une implémentation personnalisée ILoggerProvider) sans avoir à écrire un fournisseur de journalisation MTP personnalisé. Cette extension nécessite le package NuGet Microsoft.Testing.Extensions.Logging.
Note
Disponible dans MTP à compter de la version 2.3.0. Cette extension est expérimentale, et ses options et son format de sortie peuvent changer dans une version ultérieure.
Le pont transfère chaque message uniquement lorsque la journalisation des diagnostics de la plateforme est activée. Lorsque le niveau de journalisation effectif de la plateforme est None (la valeur par défaut, sauf si vous passez --diagnostic), le délégué de configuration n’est pas appelé et aucune fabrique de journalisation n’est créée. Les filtres par catégorie que vous définissez dans la ILoggingBuilder plateforme peuvent affiner le niveau de diagnostic efficace de la plateforme, mais ils ne peuvent pas l’élargir.
Inscription manuelle
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddMicrosoftExtensionsLogging(logging => logging.AddConsole());
Capture instantanée de configuration
Le package expérimental Microsoft.Testing.Extensions.Configuration ajoute au pipeline de configuration de MTP un instantané en lecture seule d’un IConfiguration appartenant à l’application.
Inscrivez la configuration avant de générer l’application de test :
var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddMicrosoftExtensionsConfigurationSnapshot(configuration);
Par défaut, l’instantané utilise l’ordre 2. Les valeurs de ligne de commande MTP (ordre 0) et les variables d’environnement (ordre 1) sont prioritaires, tandis que l’instantané est prioritaire sur testconfig.json (ordre 3). Passez un ordre différent lorsque votre application nécessite une autre priorité.
MTP lit l’instantané lorsque BuildAsync crée le pipeline de configuration. Les modifications et les notifications de rechargement ultérieures ne se propagent pas. L’appelant conserve la propriété de la configuration, les clés hiérarchiques conservent le délimiteur standard : et l’inscription s’applique uniquement au processus actuel. Un objet de configuration actif n’est pas transmis à un contrôleur ou à un processus hôte de test lancé séparément.
Intégration de l’hôte
Le package expérimental Microsoft.Testing.Extensions.Hosting exécute MTP dans un IHost appartenant à l’application. L’hôte reste la racine de composition et possède son fournisseur de services, sa configuration, sa journalisation, ses fournisseurs OpenTelemetry, sa durée de vie et sa suppression.
Pour un point d’entrée généré, définissez TestingPlatformHostFactory sur une méthode statique entièrement qualifiée qui renvoie une nouvelle instance de Task<IHost> non démarrée :
<TestingPlatformHostFactory>Contoso.Tests.TestHost.CreateHost</TestingPlatformHostFactory>
Définissez TestingPlatformOpenTelemetryMode sur HostOwned lorsque l’hôte gère les fournisseurs OpenTelemetry et que le projet de test référence Microsoft.Testing.Extensions.OpenTelemetry. Le point d’entrée généré crée et supprime l’hôte, conserve les extensions auto-inscrites et contourne la fabrique pour la ligne de commande --help et --info.
Pour un point d’entrée personnalisé, appelez RunTestingPlatformAsync sur l’hôte et enregistrez le framework de test via sa fonction de rappel. La méthode importe un instantané de configuration, transmet les diagnostics MTP au ILoggerFactory de l’hôte, démarre l’hôte avant MTP, lie l’annulation de l’hôte et de l’appelant à MTP, renvoie le code de sortie de MTP et arrête l’hôte dans un bloc finally. L’appelant libère toujours l’hôte.
Conservez la sortie standard libre du démarrage de l’hôte, de l’arrêt, de la journalisation et des messages d’exportation, car MTP l’utilise pour les modes lisibles par l’ordinateur, tels que --list-tests json, JSON-RPC mode serveur et le dotnet test protocole. Évitez également les ressources globales exclusives au sein d’une fabrique hôte utilisée avec les extensions de redémarrage de processus, car les scénarios de nouvelle tentative, de vidage sur incident ou de vidage sur blocage peuvent entraîner l’appel de la fabrique dans les processus contrôleur et enfant.
Important
Les API de configuration et d’hébergement utilisent l’ID TPEXP de diagnostic et peuvent changer dans une version ultérieure. Ils sont disponibles dans les packages de préversion MTP 2.5.