Soy la creación de un servidor de integración continua (Hudson) para construir un proyecto Java y ejecutar las pruebas de la unidad/de integración pertinentes. La mayoría de estas pruebas accede a una base de datos y los datos de prueba se guardan en un archivo DbUnit XML.integración continua: mantener el esquema de base de datos de prueba hasta a la fecha
Busco una forma de mantener automáticamente el esquema de base de datos de prueba hasta al día. Actualmente la secuencia de comandos SQL para un lanzamiento en particular se almacena en un directorio llamado después de la versión de lanzamiento:
└───scripts
├───0.1.0
├───0.1.1
├───0.1.2
├───0.1.4
Por ejemplo, la secuencia de comandos SQL para la versión 0.1.4 es
scripts\0.1.4\script-0.1.4.sql
El problema es que estos Los scripts contienen una mezcla de cambios de esquema (por ejemplo, ALTER TABLE ...) y cambios en las tablas estáticas (por ejemplo, agregue un nuevo rol a la tabla USER_TYPE).
En el caso de las pruebas unitarias, solo quiero aplicar los cambios al esquema, porque como se mencionó anteriormente, todos los datos para las pruebas unitarias se guardan en un archivo XML DbUnit. Aunque podría separar estos dos tipos de cambios de bases de datos en diferentes archivos, a menudo habrá una dependencia entre los cambios de esquema y los cambios en los datos que deberán ser de alguna manera forzada cuando la liberación se aplica a control de calidad, producción, etc.
De todos modos, esta es solo una manera muy larga de preguntar si alguien ha presentado una forma robusta de mantener automáticamente el esquema de prueba actualizado. Sé que Unitils tiene algún soporte para mantener un esquema de prueba actualizado, pero no estoy seguro de si puede 'ignorar' las declaraciones de actualización de datos en los scripts SQL delta.