Programlama ve Yazılım Geliştirme

MSTest kullanarak UWP ve WinUI 3 uygulamalarını test etmeye yönelik Microsoft rehberi

Microsoft, MSTest ve Microsoft.Testing.Platform kullanarak UWP ve WinUI 3 uygulama arayüzlerinin nasıl test edileceğini; paketlenmiş ve paketlenmemiş çalıştırma modelleri ile AppContainer üzerinden açıklıyor. Rehber; ana bilgisayarın yapılandırılmasına, çalıştırma bağımsız değişkeninin aktarılmasına, kullanıcı arayüzü dağıtıcısı desteğine ve gerçek CI ortamının doğrulanmasına odaklanıyor.

2026-10-05
4 dk okuma
2 görüntülenme
certi.news Editorial Team
MSTest kullanarak UWP ve WinUI 3 uygulamalarını test etmeye yönelik Microsoft rehberi

Microsoft, MSTest ve Microsoft.Testing.Platform aracılığıyla UWP ve WinUI 3 uygulamalarını test etmeye yönelik pratik bir rehber yayımladı. Rehber, MSIX biçimindeki paketlenmiş uygulamalar, paketlenmemiş uygulamalar ve AppContainer içinde çalışan uygulamalar dahil olmak üzere farklı çalıştırma modellerindeki test yaşam döngüsünü standartlaştırıyor. İçeriğin yazarı baş yazılım mühendisi Amaury Levé ve içerik, arayüz testlerinin yazılmasından çok test ana bilgisayarının çalıştırılma biçimini belirleyen ayrıntılara odaklanıyor.

Çalıştırma modelini seçme

Microsoft, paketleme ile güven düzeyi arasında ayrım yapıyor. Paketleme, MSIX kimliği ve AUMID aracılığıyla etkinleştirme yöntemi eklerken güven düzeyi, işlemin tam yetkilerle mi yoksa AppContainer içinde mi çalışacağını belirliyor. Rehber, paket kimliği, paketlenmiş etkinleştirme sözleşmeleri veya yüklü uygulamanın davranışıyla eşleşme gerekli olmadığında paketlenmemiş bir WinUI 3 uygulamasıyla başlanmasını öneriyor. UWP ise doğası gereği paketlemeye ve AppContainer ortamına bağlı kalıyor.

Paketlenmemiş uygulamalarda Microsoft.Testing.Platform, apphost üzerinden doğrudan bir çalıştırma yolu kullanıyor. Paketlenmiş uygulamaların ise paket düzenini kaydetmesi ve AUMID aracılığıyla etkinleştirme yapması gerekiyor. AppContainer içinde çalışacak şekilde yapılandırılmış WinUI 3 uygulamalarının ayrıca denetleyici, iptal, TRX ve HangDump iletişim kanallarına ve yeniden denemeye erişim için dikkatli yetkilendirme yapması gerekiyor. Microsoft, bunun yerine ALL APPLICATION PACKAGES izni verilmemesi konusunda uyarıyor.

MSTest ve Microsoft.Testing.Platform'ı yapılandırma

Microsoft, MSTest.Sdk 4.5 sürümünün yüklenmesini ve global.json dosyasında Microsoft.Testing.Platform'ın seçilmesini öneriyor. Böylece dotnet test komutu, VSTest yerine .NET 10'daki yerel test platformunu kullanıyor. MSTest.Sdk 4.5; MTP 2.5 platformunu, uygulama modellerine özgü yan denetleyiciyi, gerekli UWP varlıklarını ve paketlenmiş uygulama başlatıcısını içeriyor.

Modern UWP'de yapılandırma, uygun bir Windows hedef çerçevesiyle birlikte UseUwp ve PublishAot kullanımını gerektiriyor. Uygulama, etkinleştirme bağımsız değişkenlerini OnLaunched içinden oluşturulan MicrosoftTestingPlatformApplication.RunAsync yardımcısına, PackagedAppExtensions.GetTestApplicationArguments kullanarak aktarmalıdır. Geleneksel UWP projeleri mevcut yapılarını koruyor ve MSTest.Sdk'yı MSBuild.Sdk.Extras ile birlikte içe aktarıyor; ardından testler Developer PowerShell üzerinden InvokeTestingPlatform hedefiyle çalıştırılıyor.

WinUI 3 ana bilgisayarı ve kullanıcı arayüzü dağıtıcısı

İçerik, kendisini barındıran bir WinUI 3 test uygulaması oluşturulmasını öneriyor. Bu modelde uygulama kendi penceresini oluşturuyor, giriş noktasına sahip oluyor ve MSTest'i aynı işlem içinde çalıştırıyor. Pencere etkinleştirildikten sonra uygulama bir DispatcherQueue nesnesini UITestMethodAttribute.DispatcherQueue'ya yayımlıyor ve ardından RunAsync çağrısını yapıyor. Environment.ExitCode değeri test çalıştırmasının sonucuna ayarlanmalıdır; çünkü WinUI tarafından oluşturulan giriş noktası void değeri döndürüyor. Bunun göz ardı edilmesi, derleme sistemi veya CI karşısında başarısız bir çalıştırmanın başarılı görünmesine yol açabilir.

Örnek, UITestMethod'un TestInitialize ve TestCleanup dahil olmak üzere testin tamamını WinUI dağıtıcısına aktardığını gösteriyor. STATestMethod ise bir STA iş parçacığı sağlıyor, ancak kendi başına bir WinUI dağıtıcısı oluşturmuyor. Bu nedenle DispatcherQueue'ya bağlı kullanıcı arayüzü testleri için tek başına yeterli değil.

Uygulamada ne değişiyor?

Bu yaklaşımın temel değeri, UWP ile WinUI 3 arasında veya paketlenmiş ve paketlenmemiş çalıştırma arasında geçiş yapılırken MSTest'i ve aynı test yaşam döngüsünü koruyabilme olanağıdır. Yalnızca yayımlama ayarları ve başlatma yolu değişiyor. Paketlenmemiş WinUI 3'te WindowsPackageType None olarak ayarlanıyor ve MSIX tooling devre dışı bırakılıyor. Paketlenmiş çalıştırma ise Package.appxmanifest bildirimini ve paket varlıklarını koruyor; Windows 10.0.19041.0 veya daha yeni bir Windows TFM'si ile Developer Mode gibi yan yüklemeye izin veren bir politika gerektiriyor.

Her iki model de .NET 10'da dotnet run veya dotnet test --project aracılığıyla çalıştırılabiliyor. UWP ve WinUI 3 testleri ise yükseltilmemiş Developer PowerShell üzerinden özel MSBuild hedefiyle AppContainer içinde çalıştırılıyor. Microsoft, paketlenmemiş uygulamayla dotnet exec kullanılmaması konusunda uyarıyor; çünkü dotnet.exe'nin çalıştırma yoluna eklenmesi WinUI kaynaklarının yüklenmesinde sorunlara neden olabilir.

CI içinde doğrulama

Paketlenmiş testlerin geçerliliğini doğrulamak için derlemenin başarılı olması yeterli değil. Gerçek CI aracısı imajı, paketi kaydeden kullanıcı bağlamı, Developer Mode veya yan yükleme politikası ve paketin bildirdiği çerçeveler incelenmelidir. Windows App SDK ya da UWP paketleri önceden yüklenmiş bir geliştirici cihazı, yalnızca temiz bir aracıda ortaya çıkan bir boşluğu gizleyebilir. Windows App SDK çerçevesine bağlı uygulamalar, self-contained olarak derlenmedikleri sürece çalışma zamanının eşleşen sürümünü de gerektiriyor. Ancak bu durumda bile CI'da kullanılacak paket modeli test edilmelidir.

Haber kaynağı
c
Yazar

certi.news Editorial Team

Aynı kategoride

Bunlar da ilginizi çekebilir

Tüm haberleri gör