Tengo un servidor CI (Hudson) que felizmente construye, ejecuta pruebas unitarias y se implementa en el entorno de desarrollo, pero ahora me gustaría que ejecute las pruebas de integración.
Las pruebas de integración llegarán a una base de datos y esa base de datos se cambiará constantemente para contener los datos relevantes para la prueba en cuestión. Sin embargo, esto lleva a un problema: ¿cómo me aseguro de que la base de datos no esté siendo salpicada con datos para una prueba y luego que un segundo proyecto anule esos datos antes de que se complete el primer conjunto de pruebas?
Actualmente estoy usando el método de "esperanza", que no está funcionando demasiado mal en este momento, pero principalmente debido al hecho de que solo tenemos un pequeño número de pruebas de integración configuradas en CI.
Tal como lo veo, tengo las siguientes opciones:
- Bases de datos de prueba locales (en memoria)
No estoy seguro de si alguna de las bases de datos en memoria maneja todo el miedo de los desencadenantes y paquetes de Oracles, etc. - Bases de datos locales de CI Executor
Se necesitaría una buena cantidad de trabajo para configurar esto y mantenerlos actualizados, pero definitivamente es una opción (la mayor parte del trabajo ya está hecho para mantener actualizada la base de datos de CI actual). - Ejecutor único de "prueba de integración"
Probablemente sea el más fácil de implementar, pero significaría que las pruebas de integración podrían quedarse muy atrás. - Bloqueo de la base de datos (o conjunto de tablas)
Estoy seguro de que he perdido algunas formas (por favor agréguelas). ¿Cómo ejecuta pruebas de integración basadas en bases de datos en el servidor CI? ¿Qué problemas ha tenido y qué método recomienda? (Nota: aunque uso Hudson, estoy feliz de aceptar respuestas para cualquier servidor de CI, las ideas que estoy seguro serán portátiles, incluso si los detalles no lo son).
Saludos,
Mlk