Sprache
Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Vorschaupaket MSTest.Windows.UIAutomation integriert die MSTest-Lebenszyklusverwaltung in die integrierte Windows Benutzeroberflächenautomatisierung-API. Verwenden Sie sie, um eine nicht paketierte Full-Trust-Desktopanwendung zu starten, eines ihrer Fenster als AutomationElement zu finden und die Anwendung nach jedem Test zu beenden.
Das Paket unterstützt Win32-, Windows Forms- und WPF-Anwendungen in einer interaktiven Windows Sitzung. Es bietet keine MSIX-, UWP- oder WinUI-Aktivierung, Automatisierung mit erhöhten Prozessen, einen kopflosen Desktop, Locators, automatische Wartezeiten, Screenshots oder ein Objektmodell mit mehreren Fenstern.
Important
Für dieses Feature sind MSTest 4.5-Vorschaupakete und ein Windows spezifisches Zielframework erforderlich.
Aktivieren von Windows Benutzeroberflächenautomatisierung
Legen Sie mit MSTest.Sdk EnableWindowsUIAutomation auf true fest:
<Project Sdk="MSTest.Sdk/4.5.0">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<EnableWindowsUIAutomation>true</EnableWindowsUIAutomation>
</PropertyGroup>
</Project>
MSTest.Sdk fügt das entsprechende MSTest.Windows.UIAutomation Paket hinzu. Ohne MSTest.Sdk verweisen Sie auf MSTest.Windows.UIAutomation, MSTest.TestFramework und MSTest.TestAdapter in passenden MSTest-Versionen. Verweisen Sie separat auf eine kompatible Microsoft.NET.Test.Sdk Version, da sie der VsTest-Versionszeile folgt.
Legen Sie bei einem Projekt mit Windows als Zielplattform, das unter Linux oder macOS wiederhergestellt oder erstellt wird, EnableWindowsTargeting auf true fest.
Auswählen einer Basisklasse
Abgeleitet von einer der folgenden Klassen:
-
ApplicationTeststartet die Anwendung vor jedem Test und beendet sie während der Entsorgung. ÜberschreibtCreateProcessStartInfo, um die ausführbare Datei zu bestimmen. -
WindowTestwartet auch auf ein Fenster und stellt es überMainWindowbereit.
Deklarieren Sie STATestClass direkt für jede konkrete Testklasse, da MSTest-Testklassenattribute nicht geerbt werden:
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
Verwenden Sie in Ihren Testmethoden MainWindow, um Windows Benutzeroberflächenautomatisierung-Muster abzufragen oder aufzurufen. Das Paket verwendet die UIA2-API System.Windows.Automation . Sie können eine weitere Bibliothek, beispielsweise FlaUI, auf die bereitgestellten AutomationElement aufsetzen, wenn Sie eine weitergehende Interaktion mit Elementen benötigen.
Anpassen von Startvorgang und Fenstererkennung
Überschreiben Sie diese Elemente, wenn die Standardimplementierungen nicht zu Ihrer Anwendung passen:
-
ApplicationShutdownTimeoutsteuert, wie lange die Basisklasse auf das ordnungsgemäße Herunterfahren und die erzwungene Beendigung wartet. Der Standardwert ist fünf Sekunden. -
WindowDiscoveryTimeoutsteuert, wie langeWindowTestauf ein Fenster gewartet wird. Der Standardwert ist 10 Sekunden. -
FindWindowwählt ein Fenster für Anwendungen aus, die einen Startprogrammprozess verwenden, einen Begrüßungsbildschirm anzeigen oder mehrere Fenster der obersten Ebene erstellen. -
StopApplicationbeendet eine Anwendung, wenn das ausgewählte Fenster zu einem anderen Prozess als dem gestarteten ProzessCreateProcessStartInfogehört.
Die Basisklassen überwachen TestContext.CancellationToken während des Startvorgangs und der Fenstererkennung.
WindowTest schlägt fehl, wenn die Anwendung beendet wird, bevor ein Fenster erscheint, oder wenn die Suche ihr Zeitlimit erreicht.
Grundlegendes zum Lebenszyklusverhalten
ApplicationTest startet einen Anwendungsprozess für jeden Testaufruf.
WindowTest ermittelt das Fenster, nachdem der Prozess gestartet wurde. Nach Abschluss des Tests und der zugehörigen Bereinigungsmethoden entfernt MSTest die Basisklasse, fordert eine ordnungsgemäße Schließung über das Hauptfenster an und beendet die Prozessstruktur, wenn die Anwendung nicht innerhalb des konfigurierten Timeouts beendet wird.
Bei parametrisierten Tests und Wiederholungen erhält jeder Aufruf einen eigenen Anwendungslebenszyklus.