Интеграция с Microsoft.Extensions

Эти расширения связывают Microsoft.Testing.Platform (MTP) с библиотеками Microsoft.Extensions.*, которые уже использует ваше приложение, поэтому компоненты платформы и расширений используют ту же инфраструктуру, что и остальная часть вашего кода. Для каждого расширения требуется дополнительный пакет NuGet, как описано в каждом разделе.

Совет

При использовании Microsoft.Testing.Platform.MSBuild (включается транзитивно MSTest, NUnit и xUnit runners), эти расширения регистрируются автоматически при установке пакетов NuGet — изменения кода не требуются. Регистрация вручную, указанная в этой статье, требуется только в том случае, если вы отключили автоматическую точку входа, задав параметр <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>.

Мост логирования

Мост журналирования направляет журналы диагностики Microsoft.Testing.Platform в ILogger, поэтому журналы платформы и расширений проходят через тот же конвейер Microsoft.Extensions.Logging, который ваше приложение уже использует. Вы можете повторно использовать существующий стек логирования — Console, Debug, Serilog, Application Insights, OpenTelemetry или пользовательский ILoggerProvider — без написания собственного поставщика логирования MTP. Для этого расширения требуется пакет NuGet Microsoft.Testing.Extensions.Logging.

Note

Доступно в MTP начиная с версии 2.3.0. Это расширение является экспериментальным, а его параметры и формат выходных данных могут измениться в будущей версии.

Мост перенаправит каждое сообщение только в том случае, если включено ведение журнала диагностики платформы. Если эффективный уровень журналирования платформы — None (это значение используется по умолчанию, если не передать --diagnostic), делегат настройки не вызывается, и фабрика логгеров не создается. Фильтры по категориям, которые вы задаете в ILoggingBuilder, могут сузить эффективный уровень диагностики платформы, но не могут расширить его.

Регистрация вручную

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