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.
- Test Unitarios; Introducción (Entrega 1)
- Test Unitarios; Framework DUnit (Entrega 2)
- Convertir Test de DUnit a DUnitX (Entrega 3)
- Test Unitarios; Framework DUnitX (Entrega 4)
- Entornos de Ejecución (“Bonus track”)
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.
Contenido
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.
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.
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
La 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:
Frente a la que veíamos con 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:
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.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…