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
Respuestas:
Es solo una idea, ya que nunca he hecho esto, pero podría configurar una tarea para obtener el DDL para el esquema de la base de datos con la que está probando y volver a crearlo en la memoria o en otra base de datos. Parece que es bastante simple en Oracle. Luego, puede generar automáticamente la nueva base de datos cada vez que cambie.
Parece que Oracle tiene una base de datos en memoria llamada TimesTen . Puede valer la pena mirarlo. Definitivamente preferiría usar una base de datos en memoria si es posible, ya que generalmente es más rápido que el almacenamiento duro.
fuente
Ejecutamos pruebas de integración basadas en bases de datos al poner de pie un servidor de bases de datos para trabajar con el cuadro CI y alojar la instancia de CI. Algo así como cómo la preparación y la producción tienen cada uno su propio servidor de base de datos.
fuente