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.
Önizleme MSTest.Windows.UIAutomation paketi, MSTest yaşam döngüsü yönetimini yerleşik Windows UI Otomasyonu API'siyle tümleştirir. Paketlenmemiş bir tam güvenilir masaüstü uygulamasını başlatmak, pencerelerinden birini AutomationElement olarak bulmak ve her testten sonra uygulamayı durdurmak için bunu kullanın.
Paket, etkileşimli bir Windows oturumunda Win32, Windows Forms ve WPF uygulamalarını destekler. MSIX, UWP veya WinUI etkinleştirmesi, yükseltilmiş işlem otomasyonu, başsız masaüstü, bulucular, otomatik beklemeler, ekran görüntüleri veya çok pencereli nesne modeli sağlamaz.
Important
Bu özellik için MSTest 4.5 önizleme paketleri ve Windows’a özgü bir hedef çerçeve gerekir.
Windows UI Otomasyonu'ı etkinleştirin
MSTest.Sdk ile EnableWindowsUIAutomation öğesini true olarak ayarlayın:
<Project Sdk="MSTest.Sdk/4.5.0">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<EnableWindowsUIAutomation>true</EnableWindowsUIAutomation>
</PropertyGroup>
</Project>
MSTest.Sdk eşleşen MSTest.Windows.UIAutomation paketi ekler. MSTest.Sdk olmadan, MSTest.Windows.UIAutomationeşleşen MSTest sürümlerinde , MSTest.TestFrameworkve MSTest.TestAdapter başvurularını yapın. VSTest sürüm satırını izlediği için, uyumlu bir Microsoft.NET.Test.Sdk sürümünü ayrı olarak belirtin.
Linux veya macOS üzerinde geri yüklenen ya da derlenen Windows hedefli bir proje için true değerini EnableWindowsTargeting olarak ayarlayın.
Temel sınıf seçme
Şu sınıflardan birinden türet:
-
ApplicationTesther test öncesinde uygulamayı başlatır ve elden çıkarma sırasında durdurur. Yürütülebilir dosyayı tanımlamak içinCreateProcessStartInfoöğesini geçersiz kılın. -
WindowTestayrıca bir pencere bekler ve bunuMainWindowaracılığıyla sunar.
MSTest test sınıfı öznitelikleri devralınmadığı için STATestClass öğesini her bir somut test sınıfında doğrudan bildirin:
using System.Diagnostics;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Windows.UIAutomation;
[STATestClass]
public sealed class MyAppTests : WindowTest
{
protected override ProcessStartInfo CreateProcessStartInfo()
=> new(@"C:\MyApp\MyApp.exe");
}
Imports System.Diagnostics
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports Microsoft.VisualStudio.TestTools.UnitTesting.Windows.UIAutomation
<STATestClass>
Public NotInheritable Class MyAppTests
Inherits WindowTest
Protected Overrides Function CreateProcessStartInfo() As ProcessStartInfo
Return New ProcessStartInfo("C:\MyApp\MyApp.exe")
End Function
End Class
Windows UI Otomasyonu desenlerini sorgulamak veya çağırmak için test yöntemlerinizde kullanınMainWindow. Paket, UIA2 System.Windows.Automation API'sini kullanır. Daha zengin öğe etkileşimlerine ihtiyaç duyduğunuzda, açığa sunulan AutomationElement üzerine FlaUI gibi başka bir kitaplık katmanlayabilirsiniz.
Başlangıç ve pencere bulmayı özelleştirme
Varsayılanlar uygulamanıza uymadığında bu üyeleri geçersiz kılın:
-
ApplicationShutdownTimeouttemel sınıfın sorunsuz kapatma ve zorla sonlandırma için ne kadar süre bekleyeceğini belirler. Varsayılan değer beş saniyedir. -
WindowDiscoveryTimeout,WindowTestöğesinin bir pencereyi ne kadar süre bekleyeceğini belirler. Varsayılan değer 10 saniyedir. -
FindWindowbaşlatıcı işlemi kullanan, giriş ekranı gösteren veya birden çok üst düzey pencere oluşturan uygulamalar için bir pencere seçer. -
StopApplicationSeçilen pencere başlatılan işlem dışındaCreateProcessStartInfobir işleme ait olduğunda uygulamayı kapatır.
Temel sınıflar, başlatma ve pencere keşfi sırasında TestContext.CancellationToken öğesini izler.
WindowTest, bir pencere görünmeden önce uygulama sonlandığında veya algılama zaman aşımına ulaştığında başarısız olur.
Yaşam döngüsü davranışını anlama
ApplicationTest her test çağrısı için bir uygulama işlemi başlatır.
WindowTest işlem başladıktan sonra pencereyi bulur. Test ve ilgili temizleme yöntemleri tamamlandıktan sonra MSTest temel sınıfı serbest bırakır, ana pencere üzerinden uygulamanın normal şekilde kapanmasını ister ve uygulama yapılandırılmış zaman aşımı süresi içinde kapanmazsa işlem ağacını sonlandırır.
Parametreli testler ve yeniden denemeler için her çağrı kendi uygulama yaşam döngüsünü alır.