Microsoft. Integrace rozšíření

Tato rozšíření propojují Microsoft.Testing.Platform (MTP) s knihovnami Microsoft.Extensions.*, které vaše aplikace už používá, takže součásti platformy i rozšíření využívají stejnou infrastrukturu jako zbytek vašeho kódu. Každé rozšíření vyžaduje další balíček NuGet, jak je popsáno v každé části.

Tip

Při použití Microsoft.Testing.Platform.MSBuild se balíček protokolování automaticky zaregistruje pomocí vygenerovaného vstupního bodu. Konfigurační balíček vyžaduje IConfiguration instanci a hostitelský balíček vyžaduje buď TestingPlatformHostFactory nebo vlastní vstupní bod, proto postupujte podle jejich registračních oddílů.

Protokolovací můstek

Můstek protokolování přeposílá diagnostické protokoly Microsoft.Testing.Platform do ILogger, takže protokoly platformy i rozšíření procházejí stejným kanálem zpracování Microsoft.Extensions.Logging, který vaše aplikace už používá. Můžete znovu použít existující logovací zásobník — Console, Debug, Serilog, Application Insights, OpenTelemetry nebo vlastní ILoggerProvider — bez nutnosti vytvářet vlastního poskytovatele protokolování pro MTP. Toto rozšíření vyžaduje balíček NuGet Microsoft.Testing.Extensions.Logging.

Note

K dispozici v MTP od verze 2.3.0. Toto rozšíření je experimentální a jeho možnosti a výstupní formát se můžou v budoucí verzi změnit.

Most přeposílá každou zprávu pouze když je povoleno diagnostické protokolování platformy. Když je efektivní úroveň protokolování platformy None (což je výchozí hodnota, pokud nepředáte --diagnostic), delegát konfigurace není volán a nevytvoří se žádná továrna protokolování. Filtry pro jednotlivé kategorie, které jste nastavili v ILoggingBuilder, mohou zúžit účinnou úroveň diagnostiky platformy, ale nemohou ji rozšířit.

Ruční registrace

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

Snímek konfigurace

Experimentální balíček Microsoft.Testing.Extensions.Configuration přidává do konfiguračního řetězce MTP snímek IConfiguration, který vlastní aplikace, určený jen pro čtení.

Před sestavením testovací aplikace zaregistrujte konfiguraci:

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

Ve výchozím nastavení snímek používá pořadí 2. Hodnoty příkazového řádku MTP (pořadí 0) a proměnné prostředí (pořadí 1) mají přednost, zatímco snímek má přednost před testconfig.json (pořadí 3). Pokud vaše aplikace vyžaduje jinou prioritu, předejte jiné pořadí.

MTP načte snímek při BuildAsync sestavování kanálu konfigurace. Pozdější změny a oznámení o opětovném načtení se nepropagují. Volající zůstává vlastníkem konfigurace, hierarchické klíče zachovávají standardní oddělovač : a registrace se vztahuje pouze na aktuální proces. Aktivní konfigurační objekt se nepřenáší do samostatně spuštěného procesu řadiče ani do procesu hostitele testu.

Integrace s hostitelem

Experimentální balíček Microsoft.Testing.Extensions.Hosting spouští MTP v IHost, který je vlastněn aplikací. Hostitel zůstává kořenem složení a vlastní svého poskytovatele služeb, konfiguraci, protokolování, poskytovatele OpenTelemetry, životnost a likvidaci.

Pro vygenerovaný vstupní bod nastavte TestingPlatformHostFactory na plně kvalifikovanou statickou metodu, která vrací novou, nezahájenou Task<IHost>:

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

Nastavte TestingPlatformOpenTelemetryMode na HostOwned, pokud hostitel spravuje poskytovatele OpenTelemetry a testovací projekt odkazuje na Microsoft.Testing.Extensions.OpenTelemetry. Vygenerovaný vstupní bod vytvoří a odstraní hostitele, zachová rozšíření zaregistrovaná samostatně a obchází továrnu pro příkazový řádek --help a --info.

Pro vlastní vstupní bod zavolejte na hostiteli RunTestingPlatformAsync a zaregistrujte testovací framework prostřednictvím jeho callbacku. Metoda importuje snímek konfigurace, přesměruje diagnostiku MTP do ILoggerFactory hostitele, spustí hostitele před MTP, propojí zrušení hostitele a volajícího s MTP, vrátí ukončovací kód MTP a zastaví hostitele v bloku finally. Volající stále zlikviduje hostitele.

Na standardní výstup nevypisujte zprávy o spouštění a ukončování hostitele, protokolování ani exportéru, protože jej MTP používá pro strojově čitelné režimy, jako jsou --list-tests json, režim serveru JSON-RPC a protokol dotnet test. Vyhněte se také exkluzivním globálním prostředkům v hostitelské továrně používané s rozšířeními pro restart procesu, protože scénáře opakovaného pokusu, výpisu při selhání nebo výpisu při zablokování mohou vyvolat továrnu v řídicím i podřízených procesech.

Important

Konfigurační rozhraní API a rozhraní API pro hostování používají diagnostický identifikátor TPEXP a mohou se v některé z budoucích verzí změnit. Jsou dostupné v balíčcích MTP 2.5 Preview.