Una cosa más que obvié: tenemos dos DB. Una para desarrollar (como te
contaba antes, todos la usamos durante el proceso de desarrollo, debugging,
etc) y otra que sólo es usada para los tests que se ejecutan durante el
proceso de buildeo automático.

Saludos,
Luis


On 12/7/06, Luis Farzati <[EMAIL PROTECTED]> wrote:

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