Pergunta

Atualmente, temos uma instância de banco de dados para todos os nossos testes de integração. O esquema do banco de dados Oracle é sincronizado por um monte de DDLs. Em seguida, usamos dbunit para preencher e truncar as mesas entre os testes. Existem dois problemas com esta abordagem:

    .
  1. o tempo gasto preparando o banco de dados é mais do que o teste gasto
  2. Ocasionalmente, geralmente uma falha de teste, testar dados sangrentos para um teste subseqüente e causa mais falhas.
  3. Eu quero isolar os testes criando um banco de dados na memória (como H2) por teste. Eu planejo configurar eclipselink para gerar o DDL (porque converter o Oracle DDL para outra coisa será um pesadelo que eu imagino). A única questão nesse ponto seria criar gatilhos.

    Então eu tenho duas perguntas ...

      .
    1. Posso criar um banco de dados na memória (H2 ou o que for) desativado de um esquema oracle existente, acionadores incluídos?
    2. ou, posso criar um banco de dados no Memory usando meu EntityManager (geração DDL) e criar um monte de gatilhos na mosca, mas antes da execução do teste?
    3. pilha de tecnologia:

      • primavera: 3.2.8
      • Dados da mola JPA: 1.5.3
      • eclipse link: 2.5.1
      • Oracle: 11

      Estou familiarizado com como instanciar um ambiente de integração de teste de mola para carregar um banco de dados na memória. Apenas não tenho certeza de como posso traduzir as coisas do Oracle (gatilhos, especificamente).

Foi útil?

Solução

.

Posso criar um banco de dados na memória (H2 ou o que for) desativado de um esquema oracle existente, acionadores incluídos?

Sim, você pode ter isso. Usamos o Postgres para todos os nossos bancos de dados físicos e HSQL para o banco de dados na memória. Começamos com o uso de Hibernate para gerar o banco de dados desativado das classes de entidade, mas agora migrou para usar o Flyway. Tenha em mente que alguns dos seus DML e DDL serão personalizados para Oracle, então você terá que personalizar para HSQL ou H2 (bem fácil de fazer usando o Flyway).

.

ou, posso criar um banco de dados no Memory usando meu EntityManager (Geração DDL) e criar um monte de gatilhos na mosca, mas antes da execução do teste?

Você pode limpar / preencher seu banco de dados na memória no entanto desejar. Existem várias maneiras:

    .
  1. extensões de teste de flyway - isso facilita e é o que usamos. https://github.com/flyway/flyway-test-extensions .
  2. Escreva um feijão de primavera que tenha um perfil de teste @profile ("teste") e inserirá os dados para o ambiente de teste.
  3. Use um script import.sql. Eu acredito que o arnês de teste de primavera procurará isso.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top