8/1/2009 16:05
El Bruno
[VSTS2010] Ejemplo de código de una CodedUITest (para los incrédulos y para los cargosos)

Buenas,
después de un par de posts sobre las CodedUITests, o pruebas para interfaz de usuario incluidas en Visual Studio Team System 2010, algunos compañeros me han dicho que no entendían nada de nada si podía explicar un poco en detalle una prueba en concreto.
Es por esto que las siguientes 36 líneas sorprenderán por su belleza sintáxica.
1: public static void CalculatorProductTest(int firstArgument, int secondArgument)
2: {
3: // Get Calculator Window
4: UITestControl calculatorWindow = new UITestControl();
5: calculatorWindow.FrameworkName = "MSAA";
6: calculatorWindow.PrimarySearchProperties.Add("Name", "Calculator");
7: calculatorWindow.PrimarySearchProperties.Add("ClassName", "SciCalc");
8: calculatorWindow.SearchScope = SearchScope.VisibleOnly;
9: calculatorWindow.Find();
10:
11: // get value textbox control
12: WinEdit valueTextBox = new WinEdit(calculatorWindow);
13: valueTextBox.PrimarySearchProperties.Add("ClassName", "Edit");
14: valueTextBox.SearchScope = SearchScope.VisibleOnly;
15: valueTextBox.Find();
16:
17: // Type first argument value in 'Calculator' custom control
18: valueTextBox.Value = firstArgument.ToString();
19:
20: // Click '*' button
21: WinButton productButton = new WinButton(calculatorWindow);
22: productButton.PrimarySearchProperties.Add("Name", "*");
23: productButton.SearchScope = SearchScope.VisibleOnly;
24: productButton.Find();
25: productButton.Click();
26:
27: // Type second argument value in text box
28: valueTextBox.Value = secondArgument.ToString();
29:
30: // Click '=' button
31: WinButton equalButton1 = new WinButton(calculatorWindow);
32: equalButton1.PrimarySearchProperties.Add("Name", "=");
33: equalButton1.SearchScope = SearchScope.VisibleOnly;
34: equalButton1.Find();
35: equalButton1.Click();
36: }
Como se puede apreciar la función estática CalculatorProductTest(), recibe dos parámetros e implementa el siguiente funcionamiento:
- Líneas 3 a 9, búsqueda de la calculadora.
Para esto se busca por el título de la aplicación “Calculator” y por el ClassName que retorna el Handle de la window (este tipo de trabajo, con handles de Windows y cosillas complicadas, nos ponen palotes como dice mi amigo Edu)
Una vez encontrada la ventana de la calculadora comenzamos a trabajar con un objeto del tipo UITestControl llamado calculatorWindow. Debería agregar una pequeña validación por si no existe, pero como en mi máquina funciona, he pasado de la misma.
- Líneas 12 a 15, ubicar la caja de texto de la calculadora.
Una vez ubicada se asigna la misma a una variable del tipo WinEdit llamada valueTextBox.
- Línea 18, asignar el valor del primer argumento.
- Líneas 21 a 25, ubicar el botón de multiplicación [*] y presionar el mismo.
Una vez ubicado se asigna el mismo a una variable del tipo WinButton llamada productButton. y se invoca el Click().
- Línea 28, asignar el valor del segundo argumento.
- Líneas 31 a 35, ubicar el botón de resultado [=] y presionar el mismo.
Una vez ubicado se asigna el mismo a una variable del tipo WinButton llamada equalButton. y se invoca el Click().
De esta forma, teniendo la base de una función que interactua con la calculadora, puedo comenzar a crear pequeñas clases con funcionalidades aisladas e ir implementando mis pruebas de una forma ordenada. Por ejemplo:
1: [TestMethod]
2: public void ProductTestA()
3: {
4: RecordedMethods.CalculatorProductTest(22, 2);
5: Assert.AreEqual(uiMap.CalculatorWindow.ItemWindow.ItemEdit.Value, "44. ");
6:
7: RecordedMethods.CalculatorProductTest(2, 2);
8: Assert.AreNotEqual(uiMap.CalculatorWindow.ItemWindow.ItemEdit.Value, "Valentino");
9: }
Además recomiendo echarle un vistazo a los documentos que se pueden descargar desde
y finalmente, ver para creer. En el siguente video se puede ver como cuando se lanza la prueba sin tener la calculadora en ejecución la misma dispara una excepción (tarda un rato). Luego con la calculadora en ejecución se automatizan las acciones de un usuario y se contrasta con el resultado de las mismas.
Video: VSTS2010 CodedUITest Calculator Code Demo
Saludos @ La Finca
El Bruno
Crossposting from
ElBruno.com
Archivado en: VSTS,Visual Studio 2010
Comparte este post: