Simples e confiável no banco de dados de memória para testes rápidos de integração Java com suporte para JPA

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

Pergunta

Meus testes de integração funcionariam muito mais rapidamente se eu usasse o Database em memória em vez do PostgreSQL. Eu uso o JPA (Hibernate) e preciso de um dados de memória de memória que seria fácil de mudar para o uso de JPA, fácil de configurar e confiável. Ele precisa suportar JPA e Hibernate (ou vice -verso, se você preferir) bastante extensivamente, pois não desejo adotar meu código de acesso a dados para testes.

Qual banco de dados é a melhor escolha, dados os requisitos acima?

Foi útil?

Solução

Por teste de integração, Agora eu uso H2 (do autor original do HSQLDB) que eu prefiro ao HSQLDB. Isso é mais rápido (e eu quero que meus testes sejam o mais rápido possível), ele tem alguns recursos legais como o compatibilidade Modo, a equipe de desenvolvimento é muito receptiva (enquanto o HSQLDB permaneceu inativo por anos até muito recentemente).

Outras dicas

Eu tenho usado HSQLDB em memória Para testar a persistência de JPA/Hibernato em Java. Começa muito rapidamente, não requer nenhuma configuração especial.

O único problema que já vi até o uso do HSQLDB com o Hibernate tinha a ver com o tamanho do lote que precisava ser definido como 0, mas isso poderia estar relacionado a uma versão antiga. Vou dar uma escavação e ver se consigo encontrar detalhes desse problema.

Derby suporta um modo de memória Hoje em dia, não é mais marcado experimental.

Eu uso o derby. Por um lado, são cerca de três linhas de código por unidade de teste, pois não há necessidade de desligamento após o teste. No entanto, você precisa usar uma implementação JPA que possa cair e criar tabelas como o EclipSELink.

O Derby também pode inicializar um novo banco de dados de memória de um arquivo para que você possa ter um banco de dados de referência e reverter a qualquer momento.

Para testes de unidade, porém, prefiro criar meus objetos na lógica @Before da minha unidade, acho mais fácil, especialmente com o JPA, pois isso me permite a flexibilidade de fazer refatores e não preciso se preocupar com a estrutura de banco de dados subjacente, outras ferramentas, como o dbunit Confie em praticamente uma estrutura estática e a refatoração implica alterar o DBunit XMLs manualmente, em vez de depender das capacidades de refatoração do Eclipse.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top