Biblioteca de pruebas de Automatización de la interfaz de usuario
La biblioteca de pruebas de Automatización de la interfaz de usuario (biblioteca de pruebas de UIA) es una API a la que llama la aplicación de controlador en un escenario de pruebas automatizadas. El controlador es la aplicación que obtiene un elemento de automatización (objeto IUIAutomationElement) de un control que requiere comprobación y lo proporciona a la biblioteca de pruebas de Automatización de la interfaz de usuario. A continuación, la biblioteca de pruebas comprueba y valida la implementación de Automatización de la interfaz de usuario. Para obtener más información sobre Automatización de la interfaz de usuario y los elementos de automatización, consulte Automatización de la interfaz de usuario Aspectos básicos.
- Flujo de trabajo de la biblioteca de pruebas de Automatización de la interfaz de usuario
- Registro con la biblioteca de pruebas de Automatización de la interfaz de usuario
Flujo de trabajo de la biblioteca de pruebas de Automatización de la interfaz de usuario
En el diagrama siguiente se muestra un flujo de trabajo de prueba que incorpora la biblioteca de pruebas de Automatización de la interfaz de usuario mediante una aplicación de consola como controlador. En este caso, el controlador inicia una instancia de Notepad.exe y obtiene un elemento de automatización (es decir, un objeto IUIAutomationElement ) desde el control de edición. A continuación, el controlador crea un objeto de biblioteca de pruebas Automatización de la interfaz de usuario en función de la plataforma de interfaz de usuario que se está probando y, a continuación, pasa el elemento de automatización como parámetro. La biblioteca de pruebas de Automatización de la interfaz de usuario determina que el elemento de automatización es un tipo de control Document y, a continuación, ejecuta las pruebas de control Document, las pruebas de patrón de control Text y Scroll y las pruebas de elementos de automatización genéricas.
Registro con la biblioteca de pruebas de Automatización de la interfaz de usuario
La biblioteca de pruebas de Automatización de la interfaz de usuario usa archivos DLL externos para registrar los resultados de las ejecuciones de pruebas. Admite el registro como XML y el registro en la consola.
Registro XML
Visual Automatización de la interfaz de usuario Verify usa normalmente el registro XML, pero también se puede incorporar en un flujo de trabajo de línea de comandos.
Si se especifica el registro XML, la aplicación de controlador debe serializar la salida creando un objeto XmlWriter y pasandolo al método XmlLog.GetTestRunXml . A continuación, el controlador puede usar el XML serializado internamente o escribirlo en un archivo.
Los siguientes archivos DLL son necesarios para el registro XML.
- WUIALogging.dll
- WUIALoggerXml.dll
Registro de consola
De forma predeterminada, la biblioteca de pruebas de Automatización de la interfaz de usuario usa el registro de consola, donde toda la salida de registro se canaliza como texto sin formato a la ventana de la consola. WUIALogging.dll es necesario para el registro de la consola.
Requisitos de código para el registro
Una aplicación de controlador debe incluir los siguientes fragmentos de código para usar Automatización de la interfaz de usuario registro de la biblioteca de pruebas.
\\ Include logging functionality.
using Microsoft.Test.UIAutomation.Logging;
...
\\ Select a logger.
UIAVerifyLogger.SetLoggerType(LogTypes.DefaultLogger |
LogTypes.ConsoleLogger |
LogTypes.XmlLogger);
...
\\ Output comment to selected logger.
UIAVerifyLogger.LogComment("...");
Ejemplos de registro
En los ejemplos siguientes se muestra la funcionalidad básica de registro y se muestra cómo usar la API de biblioteca de pruebas de Automatización de la interfaz de usuario en una aplicación básica de controlador de automatización de pruebas.
//---------------------------------------------------------------------------
//
// Description: Sample logger.
//
//---------------------------------------------------------------------------
using System;
namespace WUITest
{
using Microsoft.Test.UIAutomation.Logging;
public sealed class TestMain
{
private TestMain() { }
/// -----------------------------------------------------------------
/// <summary>
/// Entry point
/// </summary>
/// -----------------------------------------------------------------
[STAThread]
static void Main(string[] args)
{
// Call SetLogger() if you don't want to use the default logger.
// To set the logger type, call SetLogger(<string>).
// <string> can be specified from the command line or from the
// the UI Automation Test Library enumeration:
//
// Logger.SetLogger(LogTypes.ConsoleLogger);
// Logger.SetLogger(LogTypes.DefaultLogger);
Logger.SetLogger(LogTypes.DefaultLogger);
Logger.StartTest("Test 1");
Logger.LogComment("This is a comment");
Logger.LogError(new Exception("My error"), false);
Logger.EndTest();
Logger.StartTest("Test 2");
Logger.LogComment("This is a second comment");
Logger.LogPass();
Logger.EndTest();
Logger.ReportResults();
}
}
}
//---------------------------------------------------------------------------
//
// Description: Sample test automation.
//
//---------------------------------------------------------------------------
using System;
using System.Windows;
namespace WUITest
{
using System.Diagnostics;
using System.Threading;
using System.Windows.Automation;
using Microsoft.Test.UIAutomation;
using Microsoft.Test.UIAutomation.Core;
using Microsoft.Test.UIAutomation.TestManager;
using Microsoft.Test.UIAutomation.Tests.Controls;
using Microsoft.Test.UIAutomation.Tests.Patterns;
using Microsoft.Test.UIAutomation.Tests.Scenarios;
using Microsoft.Test.UIAutomation.Logging;
public sealed class TestMain
{
// Time in milliseconds to wait for the application to start.
static int MAXTIME = 5000;
// Time in milliseconds to wait before trying to find the application.
static int TIMEWAIT = 100;
/// -------------------------------------------------------------------
/// <summary>
/// Start Notepad, obtain an AutomationElement object, and run tests.
/// </summary>
/// -------------------------------------------------------------------
[STAThread]
static void Main(string[] args)
{
// Dump the information to the console window.
// Use a different LogTypes value if you need to dump to another logger,
// or create your own logger that complies with the interface.
UIAVerifyLogger.SetLoggerType(LogTypes.ConsoleLogger);
// Get the automation element.
AutomationElement element = StartApplication("NOTEPAD.EXE", null);
// Call the UI Automation Test Library tests.
TestRuns.RunAllTests(element, true, TestPriorities.Pri0,
TestCaseType.Generic, false, true, null);
// Clean up.
((WindowPattern)element.GetCurrentPattern(WindowPattern.Pattern)).Close();
// Dump the summary of results.
UIAVerifyLogger.ReportResults();
}
/// -------------------------------------------------------------------------
/// <summary>
/// Start the application and retrieve its AutomationElement.
/// </summary>
/// -------------------------------------------------------------------------
static public AutomationElement StartApplication(string appPath,
string arguments)
{
Process process;
Library.ValidateArgumentNonNull(appPath, "appPath");
ProcessStartInfo psi = new ProcessStartInfo();
process = new Process();
psi.FileName = appPath;
if (arguments != null)
{
psi.Arguments = arguments;
}
UIAVerifyLogger.LogComment("Starting({0})", appPath);
process.StartInfo = psi;
process.Start();
int runningTime = 0;
while (process.MainWindowHandle.Equals(IntPtr.Zero))
{
if (runningTime > MAXTIME)
throw new Exception("Could not find " + appPath);
Thread.Sleep(TIMEWAIT);
runningTime += TIMEWAIT;
process.Refresh();
}
UIAVerifyLogger.LogComment("{0} started", appPath);
UIAVerifyLogger.LogComment("Obtained an AutomationElement for {0}", appPath);
return AutomationElement.FromHandle(process.MainWindowHandle);
}
}
}