Hola Diego,

Mirá, en un proyecto en el que estoy trabajando actualmente la forma de
encararlo fue la siguiente: en una primera iteración de la capa de datos,
los tests fueron ejecutados contra mocks. En iteraciones posteriores los
realizamos contra la DB actual (una sola, centralizada), salvo que exista
funcionalidad nueva. La frecuencia con la que corren los tests contra la DB
no mockeada es cada vez que se comitean cambios en el SVN ya que usamos CI
con CruiseControl.NET.

La 2 no la entendí muy bien... En los tests también hacemos los CRUDs,
aunque no lo hacemos por separado, si es a lo que te referis. En un mismo
tests hacemos todo, desde la creación hasta la eliminación. Esto lo hacemos
así porque las operaciones por separado se van a terminar ejecutando en los
tests de capas superiores, no en los de la DAL.

Para el caso del mock ponemos obviamente inicialización mock. En la DB real
los scripts se corren a mano pero la verdad que no es algo que hagamos con
frecuencia. Se inicializa una vez la DB de desarrollo y a menos que haya
cambios en el schema, los tests se ejecutan sobre lo que hay.

Con respecto a lo último, estuve leyendo (posiblemente los mismos artículos
=P) y al menos en nuestro caso, hasta ahora no tuvimos la necesidad de tener
una DB cada uno. Personalmente creo que eso depende del tipo de solución que
estén armando. Tal vez si es algo con muchas transacciones o delicado en
cuanto a consistencia y/o contenido (onda, estoy probando y si me agregás un
registro tengo que empezar de nuevo) entonces puede ser.

Saludos!
Luis


On 12/7/06, Diego Jancic <[EMAIL PROTECTED]> wrote:

 Hola gente…

hoy vengo con algunas preguntitas sobre TDD, mas practicas de lo normal…
los temas son los siguientes:



1)       Es necesario tener una DB real (me refiero a que no sea mockeada)
por desarrollador o usan todo el tiempo la mockeada… dicho de otra forma,
cuantas personas y cada cuanto ejecutan los tests en una DB no mockeada??

2)       Como se testea un select/update o delete por ID en una DB real??
Es decir, después de ejecutar el script para configurar el estado inicial de
la DB tienen que cambiar alguna propiedad constante en los tests, no??
Tambien el Test de borrar podria crear el registro, pero no me gusta mucho…
ustedes que hacen?

3)       El script de configuración de la DB, lo ejecutan en el TearUp o a
mano?? Cada uno tiene sus ventajas…

4)       Según algunos articulos, es necesario un DB por desarrollador,
ademas de la compartida… pero es real esto? Con la mockeada no es
suficiente?



Veran que todas mis preguntas son sobre como testear una DB no mockeada…
Si alguno tiene un ejemplo o articulo bueno tambien lo voy a agradecer…



Saludos a todos!,
Diego

Responder a