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.
En este tutorial, creará una aplicación Windows Presentation Foundation (WPF) simple para mostrar cómo crear, modificar y mantener una prueba del IU codificada. El tutorial proporciona soluciones para la corrección de pruebas que han sido interrumpidas por diversos problemas de sincronización y de control de refactorización.
Requisitos previos
Para este tutorial, necesitará:
- Visual Studio 2010 Ultimate o Visual Studio 2010 Premium.
Crear una aplicación de WPF sencilla
En el menú Archivo, elija Nuevo y haga clic en Proyecto.
Aparecerá el cuadro de diálogo Nuevo proyecto.
En el recuadro Plantillas instaladas, expanda Visual C# y, a continuación, seleccione Windows.
Encima del recuadro central, compruebe que la lista desplegable de versión de .NET Framework de destino se establece en .NET Framework 4.
En el recuadro central, seleccione la plantilla Aplicación WPF.
En el cuadro de texto Nombre, escriba SimpleWPFApp.
Elija la carpeta donde guardará el proyecto. En el cuadro de texto Ubicación, escriba el nombre de la carpeta.
Haga clic en Aceptar.
Se abre WPF Designer para Visual Studio y se muestra MainWindow del proyecto.
Abra el cuadro de herramientas, si aún no está abierto. Haga clic en el menú Ver y, a continuación, haga clic en Cuadro de herramientas.
Bajo la sección Todos los controles de WPF, arrastre un control Botón, Casilla y Barra de progreso hacia MainWindow en la superficie de diseño.
Seleccione el control de botón. En la ventana Propiedades, cambie el valor de la propiedad Contenido de Botón a Inicio.
Seleccione el control ProgressBar. En la ventana Propiedades, cambie el valor de la propiedad Máximo de 100 a 1000.
Seleccione el control Checkbox. En la ventana Propiedades, borre la propiedad IsEnabled.
.png)
Haga doble clic en el control de botón para agregar el evento Click.
MainWindow.xmal.cs se muestra en el Editor de código con el cursor en el nuevo evento button1_Click.
En la parte superior de la clase MainWindow, agregue un delegado. El delegado se utilizará para la barra de progreso. Para agregar el delegado, agregue el código siguiente:
private delegate void ProgressBarDelegate( System.Windows.DependencyProperty dp, Object value);En el método button1_Click, agregue el siguiente código:
double progress = 0; ProgressBarDelegate updatePbDelegate = new ProgressBarDelegate(progressBar1.SetValue); do { progress ++; Dispatcher.Invoke(updatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, progress }); progressBar1.Value = progress; } while (progressBar1.Value != progressBar1.Maximum); checkBox1.IsEnabled = true;
Comprobar que la aplicación WPF se ejecuta correctamente
En el menú Depurar, seleccione Iniciar depuración o presione F5.
Haga clic en Iniciar.
En unos segundos, la barra de progreso debería ser 100% completado. El control de casilla ahora está habilitado.
Cierre SimpleWPFApp.
Crear y ejecutar una prueba del IU codificada para SimpleWPFApp
En el Explorador de soluciones, haga clic con el botón secundario en la solución, haga clic en Agregar y, a continuación, seleccione Nuevo proyecto.
Aparecerá el cuadro de diálogo Agregar nuevo proyecto.
En el recuadro Plantillas instaladas, expanda Visual C# y, a continuación, seleccione Prueba.
En el recuadro central, seleccione la plantilla Proyecto de prueba.
Haga clic en Aceptar.
En el Explorador de soluciones, se agrega a la solución el nuevo proyecto de prueba denominado TestProject1 y el archivo UnitTest1.cs aparece en el Editor de código. Puede cerrar el archivo UnitTest1.cs porque no se utiliza en este tutorial.
En el Explorador de soluciones, haga clic con el botón secundario en TestProject1, haga clic en Agregar y, a continuación, seleccione Prueba de IU codificada.
Aparece el cuadro de diálogo Generar código para prueba de IU codificada.
Seleccione la opción Grabar acciones, editar asignación de IU o agregar aserciones y haga clic en Aceptar.
Aparece UIMap – Generador de pruebas de IU codificadas.
Para obtener más información acerca de las opciones del cuadro de diálogo, vea Cómo: Crear una prueba de IU codificada.
Busque y ejecute la aplicación SimpleWPFApp que creó anteriormente. De forma predeterminada, la aplicación se encontrará en C:\Users\<nombreusuario>\Documentos\Visual Studio 2010\Proyectos\SimpleWPFApp\SimpleWPFApp\bin\Debug\SimpleWPFApp.exe
Cree un acceso directo en el escritorio a la aplicación SimpleWPFApp. Haga clic con el botón secundario en SimpleWPFApp.exe y elija Copiar. En su escritorio, haga clic con el botón secundario y elija Pegar acceso directo.
SugerenciaUn acceso directo a la aplicación facilita el poder agregar o modificar pruebas de IU codificadas para la aplicación porque permite iniciar la aplicación rápidamente. No tiene que navegar hasta ella. Tendrá que volver a ejecutar la aplicación en este tutorial.
Haga clic en Iniciar grabación en UIMap – Generador de pruebas de IU codificadas. En unos segundos, el Generador de pruebas de IU codificadas estará listo.
Ejecute SimpleWPFApp.exe mediante el acceso directo en el escritorio.
En SimpleWPFApp, haga clic en Inicio.
En unos segundos, la barra de progreso debería ser 100% completado. El control de casilla ahora está habilitado.
Seleccione el cuadro para el control CheckBox.
Cierre la aplicación SimpleWPFApp.
En UIMap - Generador de pruebas de IU codificadas, haga clic en Generar código.
En el nombre del método, escriba SimpleAppTest y haga clic en Agregar y generar. En unos segundos, aparece la prueba de IU codificada y se agrega a la Solución.
Cierre UIMap – Generador de pruebas de IU codificadas.
El archivo CodedUITest1.cs aparece en el Editor de código.
Ejecutar la prueba de IU codificada
En el archivo CodedUITest1.cs, busque el método CodedUITestMethod, haga clic con el botón secundario y seleccione Ejecutar pruebas.
Mientras se ejecuta la prueba de IU codificada, la aplicación SimpleWPFApp está visible. Realiza los pasos que realizó en el procedimiento anterior. Sin embargo, cuando la prueba intenta activar la casilla para el control CheckBox, la ventana Resultados de pruebas muestra que se produjo un error en la prueba. Esto es debido a que la prueba intenta activar la casilla pero no tiene en cuenta que el control CheckBox está deshabilitado hasta que la barra de progreso sea 100% completado. Puede corregir esto y los problemas similares utilizando los distintos métodos UITestControl.WaitForControlXXX() que están disponibles para las pruebas de IU codificadas. El procedimiento siguiente mostrará cómo utilizar el método WaitForControlEnabled() para corregir el problema que provocó errores en esta prueba. Para obtener más información, vea Hacer que la prueba de IU codificada espere por eventos concretos durante la reproducción.
Modificar y volver a ejecutar la prueba de IU codificada
En la ventana Resultados de pruebas, haga clic con el botón secundario en la prueba con errores y seleccione Ver detalles de resultados de la prueba.
Se muestra CodedUITestMethod1[Results].
En la sección Seguimiento de pila de errores, haga clic en el primer vínculo al lado de TestProject1.UIMap.SimpleAppTest ().
El archivo UIMap.Designer.cs empieza con el punto de error resaltado en el código:
// Select 'CheckBox' check box uICheckBoxCheckBox.Checked = this.SimpleAppTestParams.UICheckBoxCheckBoxChecked;Para corregir este problema, puede hacer que la prueba de IU codificada espere a que el control CheckBox esté habilitado antes de continuar en esta línea utilizando el método WaitForControlEnabled().
PrecauciónNo modifique el archivo UIMap.Designer.cs. Cualquier cambio que se realice en el código del archivo UIMapDesigner.cs se sobrescribirá cada vez que se genere código mediante UIMap - Generador de pruebas de IU codificadas. Si tiene que modificar un método grabado, debe copiarlo en el archivo UIMap.cs y cambiar el nombre. El archivo UIMap.cs se puede utilizar para invalidar métodos y propiedades en el archivo UIMapDesigner.cs. Debe quitar la referencia al método original en el archivo UITest.cs el Codificado y reemplazarlo con el nombre del método cuyo nombre ha cambiado.
En el archivo UIMapDesinger.cs, seleccione el código para el método SimpleAppTest completo y cópielo.
En el Explorador de soluciones, abra el archivo UIMap.cs.
Pegue el código del método SimpleAppTest en la clase parcial UIMap.
Cambiar el método de SimpleAppTest() a ModifiedSimpleAppTest()
Agregue la siguiente instrucción using al archivo:
using Microsoft.VisualStudio.TestTools.UITesting.WpfControls;Agregue el siguiente método WaitForControlEnabled() antes de la línea de código que provoca el error identificada previamente:
uICheckBoxCheckBox.WaitForControlEnabled(); // Select 'CheckBox' check box uICheckBoxCheckBox.Checked = this.SimpleAppTestParams.UICheckBoxCheckBoxChecked;En el archivo CodedUITest1.cs, busque el método CodedUITestMethod y marque como comentario o cambie el nombre de la referencia al método original SimpleAppTest () y, a continuación, reemplácelo con el nuevo método ModifiedSimpleAppTest ():
[TestMethod] public void CodedUITestMethod1() { // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items. // For more information on generated code, see https://go.microsoft.com/fwlink/?LinkId=179463 //this.UIMap.SimpleAppTest(); this.UIMap.ModifiedSimpleAppTest(); }En el menú Generar, haga clic en Generar solución.
Haga clic con el botón secundario en el método CodedUITestMethod y seleccione Ejecutar pruebas.
Esta vez, la prueba de IU codificada completa correctamente todos los pasos en la prueba y aparece Superada en la ventana Resultados de pruebas.
Refactorizar un control en SimpleWPFApp
En el archivo MainWindow.xaml, en el Diseñador, seleccione el control de botón.
En la parte superior de la ventana Propiedades, seleccione el valor button1 junto a Botón y cambie el valor a buttonA.
En el menú Generar, haga clic en Generar solución.
En el menú Prueba, seleccione Ventanas y, a continuación, haga clic en Vista de pruebas.
En Vista de pruebas, seleccione CodedUITestMethod1 bajo la columna Nombre de la prueba y, a continuación, haga clic en Ejecutar selección en la barra de herramientas.
La prueba no se supera porque la prueba de IU codificada no puede localizar el control de botón que se asignó originalmente en UIMap como button1. La refactorización puede impactar las pruebas de IU codificadas de esta manera.
En la ventana Resultados de pruebas, haga clic con el botón secundario en la prueba con errores y seleccione Ver detalles de resultados de la prueba.
Aparece CodedUITestMethod1[Results].
En la sección Seguimiento de pila de errores, haga clic en el primer vínculo al lado de TestProject1.UIMpa.SimpleAppTest().
El archivo UIMap.Designer.cs se abre. El punto de error se resalta en el código:
// Click 'Start' button Mouse.Click(uIStartButton, new Point(27, 10));Observe que la línea de código anterior en este procedimiento está utilizando UiStartButton, que es el nombre de UIMap antes de refactorizarse.
Para corregir el problema, puede agregar el control refactorizado a UIMap utilizando el Generador de pruebas de IU codificadas. Puede actualizar el código de la prueba para utilizar el código, tal y como se muestra en el procedimiento siguiente.
Asignar control refactorizado, y editar y volver a ejecutar la prueba de IU codificada
En el archivo CodedUITest1.cs, en el método CodedUITestMethod1 (), haga clic con el botón secundario, seleccione Generar código para prueba de IU codificada y, a continuación, haga clic en Usar generador de pruebas de IU codificadas.
Aparece UIMap – Generador de pruebas de IU codificadas.
Use el acceso directo en el escritorio que creó anteriormente; ejecute la aplicación SimpleWPFApp que creó anteriormente.
En UIMap – Generador de pruebas de IU codificadas, arrastre la herramienta en forma de cruz hacia el botón Inicio en SimpleWPFApp.
El botón Inicio se incluye en un cuadro azul y el Generador de pruebas de IU codificadas tarda unos segundos en procesar los datos para el control seleccionado y muestra las propiedades de los controles. Observe que AutomationUId se denomina buttonA.
En las propiedades para el control, haga clic en la flecha de la esquina superior izquierda para expandir la asignación de controles de IU. Observe que UIStartButton1 está seleccionado.
En la barra de herramientas, haga clic en el Agregar control a la asignación de controles de IU.
El estado en la parte inferior de la ventana comprueba la acción mostrando El control seleccionado se ha agregado a la asignación de controles de IU.
En UIMap – Generador de pruebas de IU codificadas, haga clic en Generar código.
El Generador de pruebas de IU codificadas - Generar código aparece con una nota que indica que no se requiere ningún nuevo método y ese código únicamente se generará para los cambios a la asignación de controles de IU.
Haga clic en Generar.
Cierre SimpleWPFApp.exe.
Cierre UIMap - Generador de pruebas de IU codificadas.
UIMap – Generador de pruebas de IU codificadas tarda unos segundos en procesar los cambios en la asignación de controles de IU.
En el Explorador de soluciones, abra el archivo UIMap.Designer.cs.
En el archivo UIMap.Designer.cs, debajo del constructor en la clase generada por código UIMainWindow, expanda la región Propiedades. Observe que se ha agregado la propiedad public WpfButton UIStartButton1.
En la propiedad UIStartButton1, expanda la región de Criterios de búsqueda. Observe que SearchProperties está establecido en "buttonA":
public WpfButton UIStartButton1 { get { if ((this.mUIStartButton1 == null)) { this.mUIStartButton1 = new WpfButton(this); #region Search Criteria this.mUIStartButton1.SearchProperties[WpfButton.PropertyNames.AutomationId] = "buttonA"; this.mUIStartButton1.WindowTitles.Add("MainWindow"); #endregion } return this.mUIStartButton1; } }Ahora puede modificar la prueba de IU codificada para utilizar el control asignado recientemente. Como se indicó en el procedimiento anterior si desea invalidar cualquier método o propiedad en la prueba de IU codificada, debe hacerlo en el archivo UIMap.cs.
En el archivo UIMap.cs, agregue un constructor y especifique la propiedad SearchProperties de la propiedad UIStartButton para utilizar la propiedad AutomationID con un valor de "buttonA":
public UIMap() { this.UIMainWindowWindow.UIStartButton.SearchProperties[WpfButton.PropertyNames.AutomationId] = "buttonA"; }En el menú Generar, haga clic en Generar solución.
En Vista de pruebas, seleccione CodedUITestMethod1 bajo la columna Nombre de la prueba. En la barra de herramientas, haga clic en Ejecutar selección.
Este tiempo, la prueba de IU codificada completa correctamente todos los pasos en la prueba. En la Ventana Resultados de pruebas, verá un estado de Superada.
Vea también
Tareas
Cómo: Crear una prueba de IU codificada
Conceptos
Probar la interfaz de usuario con pruebas de IU automatizadas