Domanda

Attualmente, abbiamo un'istanza di database per tutti i nostri test di integrazione. Lo schema del database Oracle è sincronizzato da un grappolo di DDLS. Quindi usiamo dbunit per popolare e troncati le tabelle tra i test. Ci sono due problemi con questo approccio:

    .
  1. Il tempo trascorso a preparare il database è più di quello che viene speso il test
  2. A volte, di solito un errore di prova, i dati di prova sanguinano su un test successivo e provoca più fallimenti.
  3. Voglio isolare i test creando un database in-memory (come H2) per test. Ho intenzione di configurare Eclipselink per generare il DDL (perché convertire l'Oracle DDL a qualcos'altro sarà un incubo che immaginerei). L'unico problema a quel punto sarebbe quello di creare trigger.

    Quindi ho due domande ...

      .
    1. Potrei creare un database in-memory (H2 o qualsiasi altra cosa) spento di uno schema Oracle esistente, i trigger inclusi?
    2. Oppure, posso creare un database di memoria in un database di memoria utilizzando il mio EntityManager (Generazione DDL) e creare un gruppo di trigger al volo, ma prima dell'esecuzione del test?
    3. Pila di tecnologia:

        .
      • Spring: 3.2.8
      • Dati primaverili JPA: 1.5.3
      • link eclipse: 2.5.1
      • Oracle: 11

      Ho familiarità con come istanziare un ambiente di integrazione del test a molla per caricare un database in-memory. Non so come posso tradurre la roba Oracle (trigger, in particolare).

È stato utile?

Soluzione

.

Potrei creare un database in-memory (H2 o qualsiasi altra cosa) spento di uno schema Oracle esistente, i trigger sono stati inclusi?

Sì, puoi averlo. Usiamo i postGres per tutti i nostri database fisici e HSQL per il database in-Memory. Abbiamo iniziato con l'utilizzo di Hibernate per generare il database fuori dalle classi di entità, ma ora è migrato per utilizzare Flyway. Tieni presente che alcuni dei tuoi DML e DDL saranno personalizzati per Oracle, quindi dovrai personalizzare per HSQL o H2 (piuttosto facile da usare con Flyway).

.

O, posso creare un database di memoria nel mio entitàManager (Generazione DDL) e creare un mazzo di trigger al volo, ma prima dell'esecuzione del test?

Puoi pulire / popolare il tuo database in-memory Comunque desideri. Ci sono molteplici modi:

    .
  1. Estensioni del test flyway - questo rende facile ed è ciò che usiamo. https://github.com/flyway/flyway-test-etstensments . Scrivi un bean a molla che ha un profilo di prova @profile ("Test") e inserirà i dati per l'ambiente di test.
  2. Utilizzare uno script di import.sql. Credo che la cablaggio del test di primavera cercherà questo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top