Inicializar el cumplimiento de JDBC en la base de datos de memoria con los desencadenantes de las pruebas de integración?

StackOverflow https://stackoverflow.com//questions/25086115

Pregunta

Actualmente, tenemos una instancia de la base de datos para todas nuestras pruebas de integración. El esquema de la base de datos de Oracle se sincroniza con un montón de DDLS. Luego usamos DBUNIT para rellenar y truncar las mesas entre las pruebas. Hay dos problemas con este enfoque:

  1. El tiempo dedicado a preparar la base de datos es más de lo que se gasta las pruebas
  2. En ocasiones, generalmente una falla de prueba, los datos de prueba se sangran a una prueba posterior y causan más fallas.
  3. Quiero aislar las pruebas creando una base de datos en memoria (como H2) por prueba. Planeo configurar EclipsElink para generar el DDL (porque la conversión del DDL de Oracle a otra cosa será una pesadilla que me imagino). El único problema en ese punto sería crear desencadenantes.

    Así que tengo dos preguntas ...

    1. ¿Podría crear una base de datos en memoria (H2 o lo que sea) de un esquema de Oracle existente, se incluyen activadores?
    2. o, ¿puedo crear una base de datos de memoria usando mi entidades (generación DDL) y crear un montón de desencadenantes sobre la marcha, pero antes de la ejecución de la prueba?
    3. Pila de tecnología:

      • primavera: 3.2.8
      • Datos de primavera JPA: 1.5.3
      • Eclipse Link: 2.5.1
      • Oracle: 11

      Estoy familiarizado con cómo crear una instancia de un entorno de integración de pruebas de resorte para cargar una base de datos en memoria. Simplemente no estoy seguro de cómo puedo traducir las cosas oracle (desencadenantes, específicamente).

¿Fue útil?

Solución

¿Podría crear una base de datos en memoria (H2 o lo que sea) de un esquema de Oracle existente, se incluyen activadores?

Sí, puedes tener esto. Utilizamos Postgres para todas nuestras bases de datos físicas y HSQL para la base de datos en memoria. Comenzamos con el uso de Hibernate para generar la base de datos fuera de las clases de entidades, pero ahora se han migrado para usar Flyway. Tenga en cuenta que algunos de sus DML y DDL serán costumbres a Oracle, por lo que tendrá que personalizarse para HSQL o H2 (bastante fácil de hacer con Flyway).

O, ¿puedo crear una base de datos de memoria usando mi entidades (generación DDL) y crear un montón de desencadenantes sobre la marcha, pero antes de la ejecución de la prueba?

Puede limpiar / rellenar su base de datos en memoria, como desee. Hay múltiples maneras:

  1. Extensiones de prueba de Flyway: esto lo hace fácil y es lo que usamos. https://github.com/flyway/flyway-test-extensions .
  2. escribe un frijol de resorte que tiene un perfil de prueba @profile ("prueba") e insertará datos para el entorno de prueba.
  3. Usa un script Import.SQL. Creo que el arnés de prueba de primavera buscará esto.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top