Inicio > Delphi, OOP, TDD, Test > Convertir Test de DUnit a DUnitX (Entrega 3)

Convertir Test de DUnit a DUnitX (Entrega 3)

Con este artículo pensaba completar esta serie referente a pruebas unitarias y a los Frameworks más utilizados en Delphi para realizarlas, pero el tema de conversión y migración de test entre DUnit y DUnitX se ha alargado más de lo esperado, así que para no generar una entrada muy larga y mezclar temas he decidido «partirla» en dos».

De esta forma dejo para la siguiente el Framework DUnitX en profundidad y en esta me he centrado en explicaros cómo migrar los test existentes que tengamos desarrollados en DUnit.

En las últimas versiones de Delphi, DUnitX es el framework que se recomienda usar desde Embarcadero. Veremos que es más flexible y parametrizable que DUnit, aunque si hemos trabajado con DUnit, DUnitX nos será muy familiar en su mayoría de aspectos (es una evolución de DUnit, NUnit y algunos otros…).

Si ya hemos trabajado con DUnit antes que con DUnitX (como hemos hecho en las entradas del blog) podemos «migrar» nuestros test de forma sencilla, ya que existen determinadas Units ya creadas para adaptar nuestros test existentes.

CONVERTIR TEST DESDE DUNIT A DUNITX

El proceso de conversión podéis seguirlo desde la DocWiki de Embarcadero en este enlace. De todas formas vamos a repasarlo utilizando el proyecto de test que hemos creado en las entradas anteriores.

Nos vamos a basar en los primeros test que hicimos en la segunda entrada, generados con DUnit. Así que cogeremos como proyecto base el que incluye los test realizados con DUnit. A continuación os dejo el enlace de descarga.

<Descarga del código fuente del proyecto>

Para convertir el test seguiremos los siguientes pasos:

1) Crear un nuevo proyecto de DUnitX.

Hay que decir que lo que podemos aprovechar es la unit donde hemos implementado los test, pero el proyecto hay que crearlo desde cero.

Para ello, desde el menú de File/New/Other  Seleccionaremos un nuevo projecto de DUnitX.

DUnitX_Project

La siguiente ventana nos preguntará algunos parámetros sobre el proyecto. En este caso nos interesa no marcar, el check de “Create Test Unit”, pues nuestra unit ya está creada con DUnit y lo que deseamos es reaprovechar los Test creados.

TestCase_Wizard1

Finalizamos el asistente y ya tendremos nuestro proyecto creado.

2) Añadir las units de funcionalidad y de test.

Una vez que el proyecto está creado, añadimos las 2 units que teníamos en el proyecto anterior.

  • UClass.TAritmeticaBasica.pas
  • Test.UClass.TAritmeticaBasica.pas

Protecto_Test_ConvertLa primera es la unit con la funcionalidad que deseamos probar y la segunda la unit con los test creados en DUnit y que tendremos que adaptar. Nuestro proyecto ahora queda de esta manera que vemos en la imagen.

3) Modificar el test para adaptarlo.

3.1) Como primer paso, en la unit donde tenemos implementados los test hay que modificar el uses de:

TestFramework

Y sustituirlo por este otro (DUnitX):

DUnitX.TestFramework,DUnitX.DUnitCompatibility.

3.2) Al registrar el Test cambiar la línea de registro:

RegisterTest(TestTAritmeticaBasica.Suite);

Por esta otra:

TDUnitX.RegisterTestFixture(TestTAritmeticaBasica);

Con estos dos simples cambios si ejecutamos nuestro proyecto de test, ahora podemos ver que siguen funcionando y cumpliendo su función. Al realizar un Run, podremos ver una imagen similar a esta:

Resultado_Test_DUnitX

Frente a la que veíamos con DUnit:

Resultado_Test_Dunit

Aunque el resultado visual es diferente, nos interesa que los datos que nos aparecen son equivalentes. Si modificamos un poco nuestro código para generar algún error (y poder ver así cómo se ven resultados erróneos) podremos obtener algo como esto:

Test_error_DUnitX

Finalizo aquí esta entrada. Justo debajo os pongo el código del proyecto «modificado» para que podáis hacer pruebas con él. He cambiado un par de test para que fallen y de esa forma podáis ver los diferente resultados.

<Descarga del código fuente del proyecto>

Como siempre sugerencias, comentarios, peticiones, y demás son bienvenidas.

Hasta la próxima.

Vota este post
Categories: Delphi, OOP, TDD, Test Tags: , , , ,
  1. Sin comentarios aún.
  1. Sin trackbacks aún.