Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Yeni test platformumuza hoş geldiniz! Özelliklerini tanımanıza yardımcı olmak için, bir testin nasıl kaydedilip çalıştırıldığını gösteren basit bir örnekle başlayacağız. Bu temel örnek, temel işlevselliği ve nasıl hızlı bir şekilde kullanmaya başlanacağı konusunda size sağlam bir anlayış sağlayacaktır.
Not
Bu makaledeki tüm kavramlar, Microsoft Test Framework deposunda eksiksiz bir örnek olarak örneklenmektedir. Daha fazla bilgi için bkz. Örnek kod.
Adım 1: Basit bir test uygulaması kaydetme ve çalıştırma
Bu ilk örnekte, bir test uygulaması bildirmek ve çalıştırmak için temel adımları adım adım izliyeceksiniz. Bu basit yaklaşım, minimum kurulumla platformu hemen kullanmaya başlamanızı sağlar.
Adım 2: Platform Genişletme
İlk test uygulamanızın nasıl oluşturulacağını keşfettikten sonra, test uygulaması uzantılarını çevreleyen kavramları kısmen kapsayan bir uzantı örneğini keşfedeceksiniz.
Adım 3: Uzantı Noktalarına Kapsamlı Genel Bakış
Temel bilgileri rahatça edindikten sonra çeşitli uzantı noktalarını incelersiniz. Bu şunları içerir:
Platform ve Test Çerçevesi Özellikleri: Platform ve test çerçevesi tarafından sağlanan tüm özellikleri anlama ve bunları etkili bir şekilde kullanmanıza olanak sağlar.
Özel Test Çerçevesi: Özel test çerçevenizi yazma ve kaydetme, test ortamını özel gereksinimlerinize göre uyarlamanızı sağlar.
In-Process ve İşlem Dışı Uzantıları: Hem işlem içi hem de işlem dışı uzantıları yazma ve kaydetme hakkında ayrıntılı yönergeler, platformu genişletme konusunda esneklik sağlar.
Yürütme Sırası: Özel uzantılarınızın sorunsuz tümleştirilmesini ve çalışmasını sağlamak için çeşitli uzantı noktaları için yürütme sırasını netleştirme.
Adım 4: Kullanılabilir Hizmetler ve Yardımcılar
Son olarak, platformdaki kullanılabilir hizmetlerin ve yardımcı işlevlerin kapsamlı bir listesini gözden geçirirsiniz. Bu bölüm, sağlam ve verimli test uzantıları oluşturmak için kullanabileceğiniz tüm araçlardan yararlanmanıza yardımcı olacak bir başvuru görevi görecektir.
Bu yapılandırılmış yaklaşımı izleyerek, temel kullanımdan gelişmiş özelleştirmeye kadar test platformumuz hakkında kapsamlı bir anlayış elde edersiniz. Şimdi başlayalım ve platformumuzun sunabileceği tüm potansiyeli keşfedelim!
1. Adım: Basit bir test uygulaması kaydetme ve çalıştırma
Test platformunun mimarisini tanıtmak için bu belge konak olarak klasik konsol uygulamasını (Windows için) kullanacaktır. Bu belgedeki örnekler C# dilinde yazılmıştır, ancak test platformunu .NET Ecma belirtimini destekleyen herhangi bir dille kullanabilir ve .NET tarafından desteklenen herhangi bir işletim sisteminde çalıştırabilirsiniz. Platformu kullanmak için, Microsoft.Testing.Platform.dll
adresinde bulunan resmi NuGet paketi aracılığıyla erişilebilen https://www.nuget.org/packages/Microsoft.Testing.Platform derlemesine basitçe başvurun.
Contoso.UnitTests.exe
bir konsol projesinde aşağıdaki Main
yöntemi giriş noktasını tanımlar:
public static async Task<int> Main(string[] args)
{
ITestApplicationBuilder builder = await TestApplication.CreateBuilderAsync(args);
builder.RegisterTestFramework();
using ITestApplication testApp = await builder.BuildAsync();
return await testApp.RunAsync();
}
Bu kod, RegisterTestFramework
aracılığıyla MSTest gibi bir test çerçevesi kaydetmek dışında bir test oturumu yürütmek için gereken her şeyi içerir. Bu kod sonraki bölümlerde gösterilir ve açıklanır.
Not
Varsayılan davranış, giriş noktasının test platformu MSBuild görevi tarafından otomatik olarak oluşturulmasıdır. Bu işlem, Microsoft.Testing.Platform.MSBuild
paketini projenize ekleyerek yapılır.
Contoso.UnitTests.exe
uygulama başlatıldığında standart bir Windows işlemi oluşturulur ve test platformu, test oturumunu yürütmek için kayıtlı test çerçevesiyle etkileşim kurar.
Bu işi gerçekleştirmek için tek bir işlem oluşturulur:
Test platformu, aşağıdakine benzer şekilde terminalde test oturumu bilgilerini yazan yerleşik bir görüntüleme cihazı içerir:
Microsoft(R) Testing Platform Execution Command Line Tool
Version: 1.1.0+8c0a8fd8e (UTC 2024/04/03)
RuntimeInformation: win-x64 - .NET 9.0.0-preview.1.24080.9
Copyright(c) Microsoft Corporation. All rights reserved.
Passed! - Failed: 0, Passed: 1, Skipped: 0, Total: 1, Duration: 5ms - Contoso.UnitTests.dll (win-x64 - .NET 9.0.0-preview.1.24080.9)
Not
ITestApplication.RunAsync()
çağrısı tarafından döndürülen bilinen çıkış kodları, platform çıkış kodları () bölümünde ayrıntılı olarak açıklanmıştır.
2. Adım: Platformu genişletme
Test çalıştırmaları genellikle kod kapsamı bilgilerini veya kod kalitesini değerlendirmek için benzer bilgileri toplar. Bu tür iş yükleri, ortam değişkenlerini ayarlama gibi test ana bilgisayarı işlemi başlamadan önce yapılandırma gerektirebilir.
Test platformu, işlem dışı uzantılarına sahip olarak buna uyum sağlar. İşlem dışı uzantılarla çalışırken test platformu birden çok işlem başlatır ve bunları uygun şekilde yönetir.
Aşağıdaki örnekte, TestHostController uzantısını kullanarak bir kod kapsamı özelliğinin nasıl kaydedilecekleri gösterilmektedir.
ITestApplicationBuilder builder = await TestApplication.CreateBuilderAsync(args);
builder.RegisterTestFramework();
builder.AddCodeCoverage();
using ITestApplication testApp = await builder.BuildAsync();
return await testApp.RunAsync();
builder.AddCodeCoverage();
, işlem dışı genişletilebilirlik noktası olan TestHostController
genişletilebilirlik noktasını dahili olarak kullanır.
public static class TestApplicationBuilderExtensions
{
public static ITestApplicationBuilder AddCodeCoverage(
this ITestApplicationBuilder builder)
{
builder.TestHostControllers
.AddEnvironmentVariableProvider(/* ... */);
// ...
return builder;
}
}
API AddEnvironmentVariableProvider
parametreleri sonraki bölümlerde açıklanacaktır.
Test platformu bu kez Contoso.UnitTests.exe
çalıştırırken bir TestHostController
uzantısının kaydedildiğini algılar. Sonuç olarak, alt işlem olarak Contoso.UnitTests.exe
işleminin başka bir örneğini başlatır. Bu, ortam değişkenlerini AddEnvironmentVariableProvider
API'sine kayıtlı uzantının gerektirdiği şekilde ayarlamak için yapılır.
İşlem düzeni şöyle görünür:
Not
Sağlanan örnekte, başlangıç işlemini doğru işleyen ve tüm komut satırı bağımsız değişkenlerini alt işleme yayan bir konsol uygulaması düzeni varsayılır. Farklı bir konak kullanıyorsanız, giriş noktası kodunun işlem giriş noktasını ("Ana") uygun kod bloğuna doğru şekilde ilettiğinden emin olmanız gerekir. Çalışma zamanı, aynı komut satırı bağımsız değişkenleriyle kendini başlatır.
Yukarıdaki bölümde test platformunun mimarisine kısa bir giriş sağlanmaktadır. Geçerli genişletilebilirlik noktaları iki kategoriye ayrılır:
İşlemde uzantılarına test uygulaması oluşturucusunun
TestHost
özelliği aracılığıyla erişilebilir. Süreç içinde, test çerçevesiyle aynı işlemde çalışacakları anlamına gelir.ITestApplicationBuilder builder = await TestApplication.CreateBuilderAsync(args); builder.RegisterTestFramework(); builder.TestHost.AddXXX(/* ... */);
Gözlemlendiği gibi, en önemli uzantı noktası, zorunlu tek olan işlem içi
RegisterTestFramework
()dır.İşlem dışı uzantılarına test uygulaması oluşturucusunun
TestHostControllers
özelliği aracılığıyla erişilebilir. Bu uzantılar, test çerçevesini gözlemlemek amacıyla ondan ayrı bir işlemde çalışır.ITestApplicationBuilder builder = await TestApplication.CreateBuilderAsync(args); builder.TestHostControllers.AddXXX(/* ... */);
3. Adım: Uzantı noktalarına Kapsamlı Genel Bakış
çeşitliuzantı noktalarına geçmeden önce özellikleri kavramını tanıyarak başlayalım.
4. Adım: Kullanılabilir hizmetler
Test platformu hem test çerçevesine hem de uzantı noktalarına değerli hizmetler sunar. Bu hizmetler, yapılandırmaya erişim, komut satırı argümanlarını ayrıştırma ve alma, loglama fabrikasını edinme ve loglama sistemine erişim gibi yaygın ihtiyaçları karşılar.
IServiceProvider
, test platformu için hizmet bulucu düzeni uygular.
Bu hizmetlere erişme ve bunları kullanma hakkında tüm hizmetler, yardımcılar ve teknik bilgiler Microsoft.Testing.Platform Services belgelerinde listelenmiştir.