Compartir a través de


Hacer que la prueba de IU codificada espere por eventos concretos durante la reproducción

En una reproducción de prueba de UI codificada, puede indicar a la prueba que espere a que se produzcan ciertos eventos, como que se muestre una ventana, que se oculte la barra de progreso, etc.Para ello, use el método UITestControl.WaitForControlXXX() adecuado, como se describe en la tabla siguiente.Para obtener un ejemplo de una prueba de UI codificada que espera a que se habilite un control utilizando el método WaitForControlEnabled, vea Tutorial: Crear, modificar y mantener una prueba de IU codificada.

Requisitos

  • Visual Studio Ultimate, Visual Studio Premium
SugerenciaSugerencia

También puede agregar retrasos antes de acciones mediante el editor de pruebas de IU codificadas.Para obtener más información, vea Cómo: Insertar un retraso antes de una acción de IU mediante el editor de pruebas de IU codificadas.

Métodos UITestControl.WaitForControlXXX()

Métodos UITestControl.WaitForControlXXX()

Descripción

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlReady ]

Espera hasta que el control esté listo para aceptar acciones del mouse y del teclado.El motor llama implícitamente a esta API para que todas las acciones esperen hasta que el control esté listo antes de hacer cualquier operación.Sin embargo, en algún escenario esotérico, tal vez tenga que hacer la llamada explícita.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlEnabled ]

Espera hasta que el control esté habilitado cuando el asistente está haciendo alguna validación asincrónica de la entrada realizando llamadas al servidor.Por ejemplo, el método puede esperar hasta que el botón Siguiente del asistente esté habilitado ().Para obtener un ejemplo de este método, vea Tutorial: Crear, modificar y mantener una prueba de IU codificada.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlExist ]

Espera hasta que el control aparezca en la interfaz de usuario.Por ejemplo, espera un cuadro de diálogo de error después de que la aplicación haya hecho la validación de los parámetros.El tiempo que lleva la validación es variable.Puede utilizar este método para esperar el cuadro de diálogo de error.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlNotExist ]

Espera hasta que el control desaparezca de la interfaz de usuario.Por ejemplo, puede esperar hasta que desaparezca la barra de progreso.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlPropertyEqual(System.String,System.Object) ]

Espera hasta que la propiedad especificada del control tenga el valor especificado.Por ejemplo, espera a que el texto del estado cambie a Listo.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlPropertyNotEqual(System.String,System.Object) ]

Espera hasta que la propiedad especificada del control tenga el valor contrario del especificado.Por ejemplo, espera a que el cuadro de edición no sea de solo lectura, es decir, modificable.

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlCondition(System.Predicate{Microsoft.VisualStudio.TestTools.UITesting.UITestControl}) ]

Espera a que los retornos de predicado especificados sean true.Esto puede usarse en operaciones de espera complejas.Por ejemplo, puede esperar hasta que el texto de estado sea Succeeded o Failed como se muestra en el código siguiente:

// Define the method to evaluate the condition 
private static bool IsStatusDone(UITestControl control) 
{ 
    WinText statusText = control as WinText; 
    return statusText.DisplayText == "Succeeded" || statusText.DisplayText == "Failed"; 
} 
// In test method, wait till the method evaluates to true 
statusText.WaitForControlCondition(IsStatusDone);

[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForCondition``1(``0,System.Predicate{``0}) ]

Todos los métodos anteriores son métodos de instancia de UITestControl.Se trata de un método estático.Este método también espera a que el predicado especificado sea true pero se puede utilizar para la operación de espera compleja (como condiciones OR) en varios controles.Por ejemplo, puede esperar hasta que el texto del estado sea Succeeded o hasta que aparezca un mensaje de error, como se muestra en el siguiente código:

// Define the method to evaluate the condition 
private static bool IsStatusDoneOrError(UITestControl[] controls) 
{ 
    WinText statusText = controls[0] as WinText; 
    WinWindow errorDialog = controls[1] as WinWindow; 
    return statusText.DisplayText == "Succeeded" || errorDialog.Exists; 
} 
// In test method, wait till the method evaluates to true 
UITestControl.WaitForCondition<UITestControl[]>(new UITestControl[] { statusText, errorDialog }, IsStatusDoneOrError); 

Todos estos métodos tienen el siguiente comportamiento:

  • Los métodos devuelven verdadero si la espera es correcta y falso si la espera dio error.

  • El tiempo de espera implícito para la operación de espera lo especifica la propiedad WaitForReadyTimeout.El valor predeterminado de esta propiedad es 60000 milisegundos (un minuto).

  • Los métodos tienen una sobrecarga para aceptar el tiempo de espera explícito en milisegundos.Sin embargo, cuando la operación de espera produce una búsqueda implícita para el control o cuando la aplicación no está disponible, el tiempo de espera real podría ser superior al tiempo de espera especificado.

Las funciones anteriores son eficaces y flexibles y satisfacen casi todas las condiciones.Sin embargo, en caso de que estos métodos no satisfagan sus necesidades y necesite codificar Waitu o Sleep en el código, se recomienda que utilice () Playback.Wait en lugar de Thread.Sleep () API.Las razones para esto son:

  • Puede utilizar la propiedad ThinkTimeMultiplierpara modificar la duración de la suspensión.De forma predeterminada, esta variable es 1 pero puede aumentar o disminuir para cambiar el tiempo de espera en el código.Por ejemplo, si está haciendo pruebas específicamente a través de una red lenta o en algún otro caso del rendimiento lento, puede cambiar esta variable en un lugar (o incluso en el archivo de configuración) a 1,5 para agregar 50% de espera adicional en todas partes.

  • Playback.Wait() llama internamente a Thread.Sleep() (después del cálculo anterior) en fragmentos pequeños en un bucle for mientras comprueba la operación del usuario de cancelar o interrumpir.Es decir, Playback.Wait() permite cancelar la reproducción antes del final de la espera mientras que la suspensión no lo hace o produce una excepción.

SugerenciaSugerencia

El editor de pruebas de IU codificadas permite modificar fácilmente este tipo de pruebas.Con el Editor de pruebas de IU codificadas puede buscar, ver y editar métodos de prueba.También puede editar acciones de interfaz de usuario y los controles asociados en la asignación de controles de IU.Para obtener más información, vea Editar pruebas de IU codificadas mediante el editor de pruebas de IU codificadas.

Guía

Para obtener más información, vea Prueba para la entrega continuo con Visual Studio 2012 – chapter 5: Automatización de pruebas del sistema

Vea también

Tareas

Tutorial: Crear, modificar y mantener una prueba de IU codificada

Cómo: Insertar un retraso antes de una acción de IU mediante el editor de pruebas de IU codificadas

Conceptos

Comprobar el código usando pruebas de interfaz de usuario codificadas

Anatomía de una prueba de IU codificada

Configuraciones y plataformas compatibles con las pruebas de IU codificadas y las grabaciones de acciones

Otros recursos

Crear pruebas de IU codificadas