Jazyk
Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Balíček Preview MSTest.Windows.UIAutomation integruje správu životního cyklu MSTest s integrovaným rozhraním API pro Windows model UI Automation. Použijte ho ke spuštění desktopové aplikace bez balíčku s plnou důvěrou, vyhledejte jedno z jejích oken jako AutomationElement a po každém testu aplikaci ukončete.
Balíček podporuje aplikace Win32, model Windows Forms a WPF (Windows Presentation Foundation) v interaktivní relaci systému Windows. Neposkytuje aktivaci MSIX, UWP ani WinUI, automatizaci procesů se zvýšenými oprávněními, bezobslužnou pracovní plochu, lokátory, automatické čekání, snímky obrazovky ani objektový model s více okny.
Important
Tato funkce vyžaduje balíčky MSTest 4.5 Preview a cílovou architekturu specifickou pro Windows.
Povolení Windows model UI Automation
Se sadou MSTest.Sdk nastavte EnableWindowsUIAutomation na true:
<Project Sdk="MSTest.Sdk/4.5.0">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<EnableWindowsUIAutomation>true</EnableWindowsUIAutomation>
</PropertyGroup>
</Project>
MSTest.Sdk přidá odpovídající MSTest.Windows.UIAutomation balíček. Bez MSTest.Sdk odkazujte na MSTest.Windows.UIAutomation, MSTest.TestFramework a MSTest.TestAdapter v odpovídajících verzích MSTest. Odkazujte samostatně na kompatibilní verzi Microsoft.NET.Test.Sdk, protože se řídí řadou verzí VSTest.
U projektu cíleného na Windows, který se obnovuje nebo sestavuje v Linuxu nebo macOS, nastavte EnableWindowsTargeting na true.
Volba základní třídy
Odvoďte z jedné z těchto tříd:
-
ApplicationTestspustí aplikaci před každým testem a zastaví ji během odstraňování. PřepišteCreateProcessStartInfo, aby bylo možné identifikovat spustitelný soubor. -
WindowTesttaké čeká na okno a zveřejní ho prostřednictvímMainWindow.
Deklarujte STATestClass přímo u každé konkrétní testovací třídy, protože atributy test-třídy MSTest nejsou zděděny:
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
Pomocí MainWindow testovacích metod můžete dotazovat nebo vyvolat vzory Windows model UI Automation. Balíček používá rozhraní API UIA2 System.Windows.Automation . Další knihovnu, jako je FlaUI, můžete vrstvit nad vystavenou AutomationElement , když potřebujete bohatší interakci prvků.
Přizpůsobte spuštění a rozpoznávání okna
Tyto členy můžete přepsat, když se výchozí nastavení nevejde do vaší aplikace:
-
ApplicationShutdownTimeouturčuje, jak dlouho základní třída čeká na řádné vypnutí a vynucené ukončení. Výchozí hodnota je pět sekund. -
WindowDiscoveryTimeouturčuje, jak dlouhoWindowTestčeká na okno. Výchozí hodnota je 10 sekund. -
FindWindowvybere okno pro aplikace, které používají proces spouštěče, zobrazí úvodní obrazovku nebo vytvoří více oken nejvyšší úrovně. -
StopApplicationvypne aplikaci, když vybrané okno patří do jiného procesu, než je proces, kterýCreateProcessStartInfose spustil.
Základní třídy monitorují TestContext.CancellationToken při spouštění a detekci oken.
WindowTest selže, když se aplikace ukončí před zobrazením okna nebo když zjišťování dosáhne časového limitu.
Vysvětlení chování životního cyklu
ApplicationTest spustí jeden aplikační proces pro každé vyvolání testu.
WindowTest vyhledá okno poté, co se proces spustí. Po dokončení testu a jeho metod čištění nástroj MSTest odstraní základní třídu, požádá o řádné zavření hlavního okna a ukončí strom procesu, pokud aplikace neodejde v rámci nakonfigurovaného časového limitu.
Pro parametrizované testy a opakování obdrží každé vyvolání svůj vlastní životní cyklus aplikace.