Microsoft.Extensions entegrasyonu

Bu uzantılar, Microsoft.Testing.Platform (MTP) ile uygulamanızın zaten kullandığı Microsoft.Extensions.* kitaplıkları arasında köprü kurar; böylece platform ve uzantı bileşenleri, kodunuzun geri kalanıyla aynı altyapı üzerinden çalışır. Her uzantı, her bölümde açıklandığı gibi ek bir NuGet paketi gerektirir.

İpucu

Microsoft.Testing.Platform.MSBuild kullanıldığında, günlüğe kaydetme paketi oluşturulan bir giriş noktasıyla otomatik olarak kaydedilir. Yapılandırma paketi bir IConfiguration örneği gerektirir ve barındırma paketi ya TestingPlatformHostFactory ya da özel bir giriş noktası gerektirdiğinden, ilgili kayıt bölümlerini takip edin.

Günlükleme köprüsü

Günlükleme köprüsü, Microsoft.Testing.Platform tanılama günlüklerini ILogger hedefine iletir; böylece platform ve uzantı günlükleri, uygulamanızın zaten kullandığı aynı Microsoft.Extensions.Logging iş hattı üzerinden akar. Özel bir MTP günlük kaydı sağlayıcısı yazmadan, mevcut bir günlük kaydı yığınını — Console, Debug, Serilog, Application Insights, OpenTelemetry veya özel bir ILoggerProvider — yeniden kullanabilirsiniz. Bu uzantı, Microsoft.Testing.Extensions.Logging NuGet paketini gerektirir.

Note

2.3.0 sürümünden itibaren MTP'de kullanılabilir. Bu uzantı deneyseldir ve seçenekleri ve çıkış biçimi gelecekteki bir sürümde değişebilir.

Köprü her iletiyi yalnızca platformun tanılama günlüğü etkinleştirildiğinde iletir. Platformun etkin günlük düzeyi None olduğunda (varsayılan olarak, --diagnostic geçirmeniz dışında), yapılandırma temsilcisi çağrılmaz ve günlükçü fabrikası oluşturulmaz. içinde ILoggingBuilder ayarladığınız kategori başına filtreler, platformun etkin tanılama düzeyini daraltabilir, ancak genişletemez.

El ile kayıt

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

Yapılandırma anlık görüntüsü

Deneysel Microsoft.Testing.Extensions.Configuration paketi, MTP'nin yapılandırma ardışık düzenine IConfiguration öğesinin uygulamaya ait salt okunur bir anlık görüntüsünü ekler.

Test uygulamasını derlemeden önce yapılandırmayı kaydedin:

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

Varsayılan olarak, anlık görüntü sırayı 2kullanır. MTP komut satırı değerleri (sıra 0) ve ortam değişkenleri (sıra 1) öncelik kazanırken, anlık görüntü testconfig.json (sıra 3) üzerinde önceliklidir. Uygulamanız farklı bir öncelik sırası gerektiriyorsa, farklı bir sıra belirtin.

MTP, yapılandırma işlem hattını oluştururken BuildAsync anlık görüntüyü okur. Daha sonraki değişiklikler ve yeniden yükleme bildirimleri yayılmaz. Çağıran yapılandırmanın sahipliğini korur, hiyerarşik anahtarlar standart : sınırlayıcıyı korur ve kayıt yalnızca geçerli işleme uygulanır. Bir canlı yapılandırma nesnesi, ayrı olarak başlatılan bir denetleyiciye veya test ana bilgisayarı işlemine aktarılmaz.

Ana sistem entegrasyonu

Deneysel Microsoft.Testing.Extensions.Hosting paketi, MTP’yi uygulamaya ait bir IHost içinde çalıştırır. Host, bileşim kökü olarak kalır ve hizmet sağlayıcısının, yapılandırmasının, günlüklemesinin, OpenTelemetry sağlayıcılarının, ömrünün ve bertarafının sahibidir.

Oluşturulmuş bir giriş noktası için, Task<IHost> öğesini, yeni ve başlatılmamış bir TestingPlatformHostFactory döndüren tam nitelikli statik bir yönteme ayarlayın:

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

HostOwned, OpenTelemetry sağlayıcıları ana bilgisayar tarafından sağlandığında ve test projesi TestingPlatformOpenTelemetryMode öğesine başvuru içerdiğinde Microsoft.Testing.Extensions.OpenTelemetry olarak ayarlayın. Oluşturulan giriş noktası host'u oluşturur ve kaldırır, kendiliğinden kaydedilmiş uzantıları korur ve komut satırı --help ve --info için fabrikayı atlar.

Özel bir giriş noktası için, ana bilgisayarda RunTestingPlatformAsync çağrısı yapın ve test çerçevesini geri çağırma işlevi aracılığıyla kaydedin. Yöntem, bir yapılandırma anlık görüntüsünü içe aktarır, MTP tanılarını konağın ILoggerFactory bileşenine iletir, MTP'den önce konağı başlatır, konak ve çağıran iptalini MTP'ye bağlar, MTP çıkış kodunu döndürür ve konağı bir finally bloğunda durdurur. Çağıran taraf yine de host'u kapatır.

MTP, standart çıktıyı --list-tests jsonmakine tarafından okunabilen modlar (örneğin JSON-RPC sunucu modu ve dotnet test protokolü) için kullandığından, standart çıktıyı ana bilgisayarın başlatılması, kapatılması, günlükleme ve dışa aktarıcı iletilerinden arındırın. Ayrıca, yeniden deneme, çökme dökümü veya yanıt vermeme dökümü senaryoları denetleyici süreçte ve alt süreçlerde fabrikayı çağırabileceğinden, işlem yeniden başlatma uzantılarıyla kullanılan bir ana makine fabrikasında yalnızca o fabrikaya özgü küresel kaynaklardan kaçının.

Important

Yapılandırma ve barındırma API'leri TPEXP tanılama kimliğini kullanır ve gelecekteki bir sürümde değişebilir. Bunlar MTP 2.5 önizleme paketlerinde kullanılabilir.