Hola,
Acabo de toparme con este grupo gracias a un twitt de @kinisoftware...
¡Es genial poder estar en contacto con gente que usa testing en el día
a día!
Precísamente esta semana en mi proyecto estamos implementando tests
para probar DAOs. Yo estoy dándome de cabezazos contra le mesa por no
haber escrito los tests antes que el código (TDD vaya). Lo cierto es
que el proyecto se ha convertido en un pequeño monstruo y es inviable
seguir sin tests que garanticen que no rompamos lo anterior y nos
permitan refactorizar tranquilamente...
La aplicación es un poco especial. Nada que ver con Java y Spring.
Estamos desarrollando una extensión para Firefox con XUL + Javascript
(
http://www.libertexto.org/), usando SQLite como SGBD. Aún usando
JavaScript, hemos intentando crear un aplicación multicapa y hemos
implementado un GenericDAO. A la hora de probar nuestros DAOs
simplemente hemos creado una BD de testing. Tenemos una variable
global en la aplicación que determina el entorno en que se ejecuta la
app. De esta forma, al ejecutar los tests, se modifica automáticamente
esta variable para que los DAOs (más concretamente el método del
BaseDAO que determina el fichero que contiene la BD SQLite). Además,
cada vez que se ejecutan los tests se regenera la BD de pruebas. Es
algo similar a lo que hace Rails.
Para las pruebas estamos usando jsUnity (
http://jsunity.com/). Es un
"port" de xUnit en Javascript.
Lo que hacemos es que en el SetUp del testsuite insertamos (usando el
propio DAO) una serie de registros de prueba. Cada caso de prueba
instancia el DAO, ejecuta alguna operación (normalmente CRUD) y luego
ejecutamos algunas aserciones (muy similar al ejemplo de Jessica).
El problema en este momento es que la ejecución de las pruebas de un
DAO son casi 2 segundos. Para colmo los tests los estamos ejecutando
desde un fichero XUL, para que se ejecuten en el propio Firefox y
puedan acceder a los componentes XPCOM (en nuestro caso el de acceso a
SQLite). Esto conlleva que cada vez que modificamos código o los
propios tests tenemos que reiniciar el Firefox... :-(
En definitiva un poco berengenal que espero consigamos optimizar de
alguna forma...
Saludos,
Pablo Alonso García
http://alonsogarciapablo.com