¿Cómo escribir tests para Nemesis Pascal Unit?
¿Qué es un Test y cómo se escriben Tests para NPUnit?
Excepciones ofrecidas
Funciones
Ejemplos
1. ¿Qué es un Test y cómo se escriben Tests para NPUnit?
- Los tests en NPUnit son procedimientos sin parámetros que ejecutan una serie de operaciones y que se comprueba si generan alguna excepción en la ejecución de los mismos. Un tests para unit es un procedimiento que en su nombre comience con la cadena Test y que no reciba ningún tipo de parámetro de entrada. Así mismo, al ser un procedimiento no devuelve tampoco absolutamente nada. Un ejemplo de nombre de tests podría ser“TestConvertirDatos”, “TestGuardarDatos”, “TestConexiónConBD”, etc...
2. Excepciones Ofrecidas
- El runtime de Nemesis Pascal Unitactualmente (versión 0.0.1) solo ofrece soporte para 2 tipos de excepciones: ETestError y ETestFailed. Estas clases derivan directamente de la clase Exception de Delphi/Kylix.
- Generar la excepción ETestError especificará al programa encargado de ejecutar la batería de tests que el test ha fallado debido a un error no esperado.
- La excepción ETestFailed especifica que el test ha fallado, bien por un error, bien porque no se dan las circunstancias que especifican que el test es correcto.
3. Funciones
- En la versión actual de Nemesis Pascal Unit se da soporte para las siguientes funciones :
AssertTrue : Comprueba si el valor de la variable pasada (Variant compatible) es true. Si el valor no es true, da el test por fallido.
AssertFalse : Comprueba si el valor de la variable pasada (Variant compatible) es false. Si el valor no es false, da el test por fallido.
AssertEquals : Comprueba si el valor de las variables (Variant compatibles) son iguales. Si los valores no son iguales, da el test por fallido.
AssertNull : Comprueba si la variable es nula. Si la variable no es nula se da el test por fallido.
AssertNotNull : Comprueba si la variable es no nula. Si la variables no es no nula se da el test por fallido.
AssertSame : Comprueba si el valor de las variables (Variant compatibles) son iguales. Si los valores no son iguales, da el test por fallido.
AssertDifferents : Comprueba si el valor de las variables (Variant compatibles) son diferentes. Si los valores no son diferentes, da el test por fallido.
Fail : Da por fallido un test.
4. Ejemplos
- Para poder crear un test en una unidad Pascalcualquiera, primero necesita una unidad Pascal “cualquiera”. Copie el siguiente fragmento de código Pascal, péguelo en un nuevo documento de texto ASCIIy guárdelo con el nombre “sample1.pas”, sin las comillas, por supuesto.
Unit sample1;
interface
implementation
var
myForm : Tform;
procedure Main;
begin
myForm := Tform.Create(Nil);
myForm.Show;
end;
end.
- Una vez guardado el texto anterior en un archivo denominado “sample1.pas”, agregue la siguiente función al programa Pascal, en las líneas anteriores a la palabra clave “end.”:
procedure TestCreatingForm;
begin
myForm := Tform1.Create(Nil);
myForm.Free;
end;
- Abra ahora esta unidad con el programa NPUnit comprobará que se muestra el test TestCreatingForm en la lista de tests de la unidad. Pulse el botón etiquetado “Cargar Tests” y, a continuación en botón etiquetado “Verificar”.Trás esto se le mostrará una ventana en la que se especifica el nombre de la unidad que ha fallado, el número de fallos, el número de errores, el número de test fallados y el número de tests totales ejecutados. Pulse“Aceptar”. En el formulario de ejecución de tests aparece en el recuadro central la lista de fallos corriendo las baterías de tests, apareciendo el siguiente error : Test “TestCreatingForm” failed with error. Haga click en esta línea y verá como se le muestra una descripción menos austera del error en el recuadro inmediatamente inferior :Error in unit 'sample1' on line 19 : Undeclared identifer 'Tform1'.
- Ya hemos aprendido a crear tests en una unidad Pascal, este es el momento de corregir los errores que se producen en el código. Tomando el ejemplo anterior, modifique en el test “TestCreatingForm”el identificador Tform1 por Tform y vuelva a ejecutar la batería de tests. Trás la ejecución de la batería de tests no se obtiene ningún mensaje. Esto quiere decir que los tests están libres de errores.