Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pakiet w wersji zapoznawczej MSTest.Windows.UIAutomation integruje zarządzanie cyklem życia msTest z wbudowanym interfejsem API Windows automatyzacja interfejsu użytkownika. Służy do uruchamiania niepakietowanej aplikacji klasycznej o pełnym zaufaniu, wyszukiwania jednego z jej okien jako elementu AutomationElement i zatrzymywania aplikacji po każdym teście.
Pakiet obsługuje aplikacje Win32, Windows Forms i WPF w interaktywnej sesji Windows. Nie zapewnia aktywacji MSIX, UWP ani WinUI, automatyzacji procesów z podwyższonym poziomem uprawnień, pulpitu bezgłowego, lokalizatorów, automatycznych oczekiwań, zrzutów ekranu ani modelu obiektów z wieloma oknami.
Ważna
Ta funkcja wymaga pakietów MSTest 4.5 w wersji zapoznawczej i platformy docelowej specyficznej dla Windows.
Włącz Windows automatyzacja interfejsu użytkownika
W pakiecie MSTest.Sdk ustaw EnableWindowsUIAutomation na true:
<Project Sdk="MSTest.Sdk/4.5.0">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<EnableWindowsUIAutomation>true</EnableWindowsUIAutomation>
</PropertyGroup>
</Project>
MSTest.Sdk dodaje odpowiedni pakiet MSTest.Windows.UIAutomation. Jeśli nie używasz MSTest.Sdk, dodaj odwołania do MSTest.Windows.UIAutomation, MSTest.TestFramework i MSTest.TestAdapter w wersjach zgodnych z MSTest. Podaj zgodną wersję Microsoft.NET.Test.Sdk osobno, ponieważ odpowiada ona linii wersji VSTest.
W przypadku projektu przeznaczonego dla systemu Windows, który jest przywracany lub kompilowany w systemie Linux albo macOS, ustaw EnableWindowsTargeting na true.
Wybieranie klasy bazowej
Pochodzą z jednej z następujących klas:
-
ApplicationTesturuchamia aplikację przed każdym testem i zatrzymuje ją podczas usuwania. ZastąpCreateProcessStartInfo, aby zidentyfikować plik wykonywalny. -
WindowTestrównież czeka na okno i udostępnia je za pośrednictwemMainWindow.
Zadeklaruj STATestClass bezpośrednio w każdej konkretnej klasie testowej, ponieważ atrybuty klasy testowej MSTest nie są dziedziczone:
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
Użyj elementu MainWindow w metodach testowych, aby wykonywać zapytania lub wywoływać wzorce Windows automatyzacja interfejsu użytkownika. Pakiet używa interfejsu API UIA2 System.Windows.Automation . Możesz warstwować inną bibliotekę, taką jak FlaUI, na uwidocznioną AutomationElement , gdy potrzebujesz bardziej rozbudowanej interakcji z elementami.
Dostosuj uruchamianie i wykrywanie okien
Zastąp te składowe, gdy wartości domyślne nie odpowiadają potrzebom aplikacji:
-
ApplicationShutdownTimeoutokreśla, jak długo klasa podstawowa czeka na bezproblemowe zamknięcie i wymuszone zakończenie. Wartość domyślna to pięć sekund. -
WindowDiscoveryTimeoutokreśla czasWindowTestoczekiwania na okno. Wartość domyślna to 10 sekund. -
FindWindowwybiera okno dla aplikacji korzystających z procesu uruchamiania, wyświetlania ekranu powitalnego lub tworzenia wielu okien najwyższego poziomu. -
StopApplicationzamyka aplikację, gdy wybrane okno należy do procesu innego niż uruchomiony procesCreateProcessStartInfo.
Klasy podstawowe monitorują TestContext.CancellationToken podczas uruchamiania oraz wykrywania okien.
WindowTest nie powiedzie się, jeśli aplikacja zakończy działanie przed wyświetleniem okna lub jeśli wykrywanie przekroczy limit czasu.
Poznaj działanie cyklu życia
ApplicationTest Uruchamia jeden proces aplikacji dla każdego wywołania testowego.
WindowTest odnajduje okno po rozpoczęciu procesu. Po zakończeniu testu i jego metod oczyszczania narzędzie MSTest usuwa klasę bazową, żąda bezpiecznego zamknięcia przez okno główne i kończy drzewo procesów, jeśli aplikacja nie zakończy działania w skonfigurowanym przedziale czasu.
W przypadku sparametryzowanych testów i ponownych prób każde wywołanie otrzymuje własny cykl życia aplikacji.