Lenguaje
Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El paquete de versión preliminar MSTest.Windows.UIAutomation integra la administración del ciclo de vida de MSTest con la API de Windows Automatización de la interfaz de usuario integrada. Úselo para iniciar una aplicación de escritorio de plena confianza sin empaquetar, busque una de sus ventanas como AutomationElementy detenga la aplicación después de cada prueba.
El paquete admite aplicaciones Win32, Windows Forms y WPF en una sesión interactiva de Windows. No proporciona activación de MSIX, UWP ni WinUI, automatización de procesos elevados, un escritorio sin encabezado, localizadores, esperas automáticas, capturas de pantalla o un modelo de objetos de varias ventanas.
Importante
Esta característica requiere paquetes de versión preliminar de MSTest 4.5 y una plataforma de destino específica de Windows.
Habilitar Windows Automatización de la interfaz de usuario
Con MSTest.Sdk, configure EnableWindowsUIAutomation en true:
<Project Sdk="MSTest.Sdk/4.5.0">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<EnableWindowsUIAutomation>true</EnableWindowsUIAutomation>
</PropertyGroup>
</Project>
MSTest.Sdk agrega el paquete coincidente MSTest.Windows.UIAutomation . Sin MSTest.Sdk, haga referencia a MSTest.Windows.UIAutomation, MSTest.TestFrameworky MSTest.TestAdapter en las versiones de MSTest coincidentes. Haga referencia a una versión compatible Microsoft.NET.Test.Sdk por separado porque sigue la línea de versión de VSTest.
Para un proyecto destinado a Windows que se restaura o se compila en Linux o macOS, establezca EnableWindowsTargeting en true.
Elección de una clase base
Derive de una de estas clases:
-
ApplicationTestinicia la aplicación antes de cada prueba y la detiene durante la eliminación. AnuleCreateProcessStartInfopara identificar el ejecutable. -
WindowTesttambién espera una ventana y la expone a través deMainWindow.
Declare STATestClass directamente en cada clase de prueba concreta porque los atributos de clase de prueba de MSTest no se heredan:
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
Use MainWindow en los métodos de prueba para consultar o invocar patrones Windows Automatización de la interfaz de usuario. El paquete usa la API de UIA2 System.Windows.Automation . Puede colocar otra biblioteca, como FlaUI, sobre la expuesta AutomationElement cuando se necesita una interacción de elementos más completa.
Personalice el inicio y la detección de ventanas
Invalide estos miembros cuando los valores predeterminados no se ajusten a la aplicación:
-
ApplicationShutdownTimeoutdetermina cuánto tiempo espera la clase base para el apagado ordenado y la terminación forzada. El valor predeterminado es de cinco segundos. -
WindowDiscoveryTimeoutcontrola cuánto tiempoWindowTestespera una ventana. El valor predeterminado es 10 segundos. -
FindWindowselecciona una ventana para las aplicaciones que usan un proceso de iniciador, muestra una pantalla de presentación o crea varias ventanas de nivel superior. -
StopApplicationcierra una aplicación cuando la ventana seleccionada pertenece a un proceso distinto del queCreateProcessStartInfose inició.
Las clases base observan TestContext.CancellationToken durante el inicio y la detección de ventanas.
WindowTest se produce un error cuando la aplicación se cierra antes de que aparezca una ventana o cuando la detección alcance su tiempo de espera.
Comprender el comportamiento del ciclo de vida
ApplicationTest inicia un proceso de aplicación para cada invocación de prueba.
WindowTest detecta la ventana después de que se inicie el proceso. Una vez finalizada la prueba y sus métodos de limpieza, MSTest elimina la clase base, solicita un cierre estable a través de la ventana principal y finaliza el árbol de procesos si la aplicación no sale del tiempo de espera configurado.
Para las pruebas y reintentos con parámetros, cada invocación recibe su propio ciclo de vida de la aplicación.