Difference between revisions of "GXUnit"

From GXtest Wiki
Jump to: navigation, search
(Prueba de Transacciones (BC))
(Prueba de Data Providers)
Line 122: Line 122:
 
Al crear un nuevo caso de prueba asociado a un Data Provider se genera código genexus por defecto de la siguiente manera:
 
Al crear un nuevo caso de prueba asociado a un Data Provider se genera código genexus por defecto de la siguiente manera:
  
Se inicializan los parámetros de entrada del DP
+
*Se inicializan los parámetros de entrada del DP
Se llama al DP
+
*Se invoca al DP
Se inicializa el resultado esperado (BC o SDT)
+
*Se inicializa el resultado esperado (BC o SDT)
Se realiza un AssertStringEquals para comparar el Output esperado con el obtenido
+
*Se realiza un AssertStringEquals para comparar el Output esperado con el obtenido
  
[[image:GXunit_assertstringeq.png|center]]
 
 
  
 +
[[image:GXunit_assertstringeq.png|center]]
  
 
== Asserts ==
 
== Asserts ==

Revision as of 18:52, 17 October 2013

GXUnit Guía de usuario

Contents

Introducción

Este documento tiene el objetivo de mostrar las funcionalidades ofrecidas por GXUnit, la herramienta de testing unitario GeneXus.

A continuación encontrará: - Cómo instalar GXUnit - Cómo crear pruebas unitarias - Cómo ejecutarlas de manera interactiva y ver los resultados - Cómo ejecutarlas en forma Batch (msbuild)


Instalación

A continuación se muestran los pasos para la instalación de GXUnit.

Ventanas del instalador:

1. Pantalla de bienvenida 2. License agreement 3. Seleccionar instalación de GeneXus 4. Listo para instalar

GXunit installation1.png
GXunit installation2.png

En esta pantalla de listan todas las instalaciones de GeneXus detectadas por el instalador. Si su instalación de GeneXus no se encuentra en la lista puede seleccionar a mano la carpeta donde se encuentra el archivo GeneXus.exe

GXunit installation3.png


GXunit installation4.png

Inicialización de GXUnit

La inicialización de GXUnit debe hacerse a mano mediante una opción en el menú GXUnit. De esta manera se crea el conjunto de objetos necesarios para poder utilizar la herramienta. Estos objetos son colocados en una carpeta llamada GXUnit en el árbol de objetos.

GXunit create.png


Eliminación de objetos GXUnit

Existe una funcionalidad en el menú que elimina todos los objetos relacionados con GXUnit, esto incluye todos los objetos TestCase y todas las Suites que hayan sido creados.


GXunit delete.png

Tool window GXUnit

Para poder trabajar con la herramienta se deberá tener habilitada la tool window GXUnit. En esta tool window podemos ver todas las suite de pruebas y todos los casos de prueba que tenemos definidos.


GXunit toolWindow.png

Suite de prueba

Una suite de pruebas tiene la funcionalidad de agrupar cierto conjunto de Casos de prueba según el criterio del usuario. Para crear una nueva Suite de Pruebas se debe hacer click derecho sobre una suite ya creada o sobre cualquier lugar de la tool window GXUnit para crear una Suite del primer Nivel.4

GXunit suite1.png

Luego de seleccionar Nueva Suite se pide el nombre de la misma y al ingresarlo se crea una nueva Folder GeneXus bajo la estructura Objects/GXUnitSuites.


GXunit suite2.png

Caso de prueba

Para crear un nuevo Caso de Prueba se presiona Click derecho en una Suite y se selecciona Nuevo TestCase. En el cuadro de dialogo de nuevo objeto GeneXus se debe seleccionar el objeto TestCase y como Folder queda seleccionada la Suite elegida.

GXunit create1.png

Al crear un nuevo objeto de este tipo se pregunta a qué objeto está asociado. En esta versión se permiten seleccionar objetos Procedure, DataProvider o Transaction.

GXunit create2.png

El objeto TestCase tendrá un editor donde se podrá utilizar la sintaxis del objeto Procedimiento para llamar a cualquier otro objeto GX, y realizar las comparaciones llamando a los objetos de tipo Assert que se describen más adelante. Al crearse un caso de prueba se genera automáticamente código GeneXus por defecto donde se llama al objeto a probar y se realizan asserts para evaluar los resultados de dicha llamada. El objetivo es modificar este código para que se adapte a las necesidades del usuario.


Prueba de Procedimientos GeneXus

Para el caso de que el objeto asociado al caso de prueba sea un Procedimiento se crea una variable por cada una que se encuentre en la regla “Parm” del procedimiento a probar y según su tipo, si es de entrada o entrada/salida se inicializa con un valor por defecto o si es de salida o entrada/salida se evalúa con una llamada a un Assert (según el tipo).

GXunit procedure.png


Prueba de Transacciones (BC)

Al crear un nuevo caso de prueba asociado a una transacción con la propiedad Business Component se genera código genexus por defecto de la siguiente manera:

  • Se define una variable del tipo de la transacción BC
  • Inicializa con un valor por defecto todos los atributos
  • Guarda los datos (save del BC)
  • Carga los datos (load del BC)
  • Se realiza un assert para cada mensaje de la Transacción
  • Se realiza un assert por cada atributo del Business Component


GXunit assertBC.png

Prueba de Data Providers

Al crear un nuevo caso de prueba asociado a un Data Provider se genera código genexus por defecto de la siguiente manera:

  • Se inicializan los parámetros de entrada del DP
  • Se invoca al DP
  • Se inicializa el resultado esperado (BC o SDT)
  • Se realiza un AssertStringEquals para comparar el Output esperado con el obtenido


GXunit assertstringeq.png

Asserts

Los métodos de tipo Assert son utilizados para comparar los resultados de la ejecución de objetos bajo prueba con los resultados que se esperan de dichos objetos. Fueron implementados como Procedimientos GeneXus. Se proveerán dos de estos métodos, AssertNumericEquals y AssertStringEquals, para comparar variables numéricas y cadenas de caracteres respectivamente. Estos procedimientos son creados al inicializarse GXUnit y forman parte de la KB.

Al ejecutarse uno de estos métodos se irán guardando los resultados para luego poder visualizar todos los resultados de la ejecución de los casos de prueba.

Ejecución de Casos de Prueba

La tool window contiene los conjuntos de Casos de Prueba agrupados en sus respectivas Suites.

GXunit execution.png


Seleccionando los casos de prueba que quieren ser ejecutados (mediante su check box) al presionar botón “Test” se creará un nuevo procedimiento (RunnerProcedure) que tendrá las llamadas a todos los tests a correr, se generarán todos los objetos necesarios y se ejecutarán.


Visualización de resultados

Luego de ejecutados los casos de prueba se crea un objeto Resultado donde quedará registro del resultado de la prueba. Este objeto tendrá como nombre la fecha y hora de ejecución. En el cabezal se muestra los tests ejecutados y la cantidad de ellos que fallaron. Los Asserts que fallen se mostrarán en rojo con el detalle de la falla y los que se completen satisfactoriamente se mostrarán en verde.

GXunit results.png

Exportación e Importación de Casos de Prueba y Resultados

Tanto los Test Case, Suites como objetos Resultado se pueden exportar e importar entre las distintas Bases de Conocimiento que tengan instalada la herramienta como cualquier otro objeto GeneXus.


Ejecución usando tareas MSBuild

En la dll GXUnit.dll que se encuentra en la carpeta “Directorio de instalación de GeneXus\Packages” están definidas dos tareas MSBuild (GenerateGXUnitTests y GenerateGXUnitResults) para poder realizar la ejecución de las pruebas desde un script MSBuild. Para usarlas hay que importarlas en el script MSBuild.

Un ejemplo de uso de las tareas, usando también tareas definidas por GeneXus, es el siguiente:

<Target Name="GXUnit">
<OpenKnowledgeBase Directory="Path a la KB"/>
<GenerateGXUnitTests>
<Output TaskParameter="XMLName" PropertyName="XMLName" />
</GenerateGXUnitTests>
<BuildOne ObjectName="RunnerProcedure" ForceRebuild="true" />
<Run ObjectName="RunnerProcedure" />
<GenerateGXUnitResults XMLName="$(XMLName)"/>
<CloseKnowledgeBase />
</Target>