Bahasa
Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Paket pratinjau MSTest.Windows.UIAutomation mengintegrasikan manajemen siklus hidup MSTest dengan API Windows UI Automation bawaan. Gunakan ini untuk meluncurkan aplikasi desktop tepercaya penuh yang belum dikemas, menemukan salah satu jendelanya dalam bentuk AutomationElement, dan menghentikan aplikasi setelah setiap tes.
Paket ini mendukung aplikasi Win32, Formulir Windows, dan WPF dalam sesi Windows interaktif. Ini tidak menyediakan Aktivasi MSIX, UWP, atau WinUI, otomatisasi proses yang ditinggikan, desktop tanpa kepala, pencari lokasi, penantian otomatis, cuplikan layar, atau model objek multi-jendela.
Important
Fitur ini memerlukan paket pratinjau MSTest 4.5 dan kerangka kerja target khusus Windows.
Aktifkan Windows UI Automation
Dengan MSTest.Sdk, atur EnableWindowsUIAutomation ke true:
<Project Sdk="MSTest.Sdk/4.5.0">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<EnableWindowsUIAutomation>true</EnableWindowsUIAutomation>
</PropertyGroup>
</Project>
MSTest.Sdk menambahkan paket MSTest.Windows.UIAutomation yang sesuai. Tanpa MSTest.Sdk, gunakan referensi ke MSTest.Windows.UIAutomation, MSTest.TestFramework, dan MSTest.TestAdapter pada versi MSTest yang sesuai. Cantumkan versi Microsoft.NET.Test.Sdk yang kompatibel secara terpisah karena versi tersebut mengikuti baris versi VSTest.
Untuk proyek yang ditargetkan Windows yang memulihkan atau membangun di Linux atau macOS, atur EnableWindowsTargeting ke true.
Pilih kelas dasar
Berasal dari salah satu kelas ini:
-
ApplicationTestmemulai aplikasi sebelum setiap pengujian dan menghentikannya selama pembuangan. Ambil alihCreateProcessStartInfountuk mengidentifikasi executable. -
WindowTestjuga menunggu jendela dan menampilkannya melaluiMainWindow.
Deklarasikan STATestClass langsung pada setiap kelas pengujian konkret karena atribut kelas pengujian MSTest tidak diwariskan:
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
Gunakan MainWindow dalam metode pengujian Anda untuk mengkueri atau memanggil pola Windows UI Automation. Paket ini menggunakan API UIA2 System.Windows.Automation . Anda dapat menambahkan pustaka lain, seperti FlaUI, di atas AutomationElement yang diekspos saat Anda memerlukan interaksi elemen yang lebih lengkap.
Sesuaikan startup dan pendeteksian jendela
Timpa anggota ini jika nilai bawaannya tidak cocok untuk aplikasi Anda:
-
ApplicationShutdownTimeoutmengontrol berapa lama kelas dasar menunggu pematian anggun dan penghentian paksa. Defaultnya adalah lima detik. -
WindowDiscoveryTimeoutmengontrol berapa lamaWindowTestmenunggu jendela. Defaultnya adalah 10 detik. -
FindWindowmemilih jendela untuk aplikasi yang menggunakan proses peluncur, menampilkan layar splash, atau membuat beberapa jendela tingkat atas. -
StopApplicationmematikan aplikasi ketika jendela yang dipilih termasuk dalam proses selain proses yangCreateProcessStartInfodiluncurkan.
Kelas dasar mengamati TestContext.CancellationToken selama startup dan penemuan jendela.
WindowTest gagal ketika aplikasi keluar sebelum jendela muncul atau ketika penemuan mencapai batas waktunya.
Memahami perilaku siklus hidup
ApplicationTest memulai satu proses aplikasi untuk setiap pemanggilan pengujian.
WindowTest menemukan jendela setelah proses dimulai. Setelah pengujian dan metode pembersihannya selesai, MSTest membuang kelas dasar, meminta penutupan yang anggun melalui jendela utama, dan mengakhiri pohon proses jika aplikasi tidak keluar dalam batas waktu yang dikonfigurasi.
Untuk pengujian dan percobaan ulang berparameter, setiap pemanggilan menerima siklus hidup aplikasinya sendiri.