Pergunta

Estou construindo um aplicativo usando OpenJPA 2.0.0, Jersey 1.3 e JUnit 4.8.1.

Eu configurei para ter duas unidades de persistência diferentes definidas em meu persistence.xml:"Padrão" e "unittest". O padrão está configurado para conectar -se a uma instância do Oracle, enquanto o UNITTEST está configurado para conectar -se a um arquivo de banco de dados incorporado H2DB local.Faço isso para sempre iniciar meus testes de unidade com um banco de dados limpo que contém certos dados conhecidos, que podem ser substituídos entre cada execução dos testes de unidade.

O problema é que agora quero usar o Jersey Testing Framework para testar meus serviços da web reais, em vez de apenas as camadas inferiores do programa.Minhas classes de recursos raiz não carregam a unidade de persistência unittest, elas sempre carregam o padrão.

Então, o que provavelmente preciso fazer é injetar nas classes de recursos raiz qual a unidade de persistência deve ser usada para instanciar o EntityManager e, em seguida, ter alguma maneira de injetar unittest quando estou executando meus testes, mas injetar padrão caso contrário.Mas não consigo pensar em nenhuma boa maneira de fazer isso.

Sou novo no desenvolvimento Java EE, o que pode ser óbvio.

Qualquer ajuda?

Foi útil?

Solução

Eu acho que deveria ser possível criar uma segunda persistência.xml no src/test/rources/meta-inf.

Se eu entender as coisas corretamente, o MAVEN colocará as classes de destino/teste no caminho de classe à frente do Target/Classes, de modo que, em um teste de unidade, apenas a persistência do teste.xml seja lida. Dessa forma, você pode usar o mesmo nome da unidade de persistência, mas com uma configuração diferente.

src/main/resources/
    META-INF
        persistence.xml  <-- for actual application

src/test/resources/
    META-INF
        persistence.xml  <-- for unit tests

EDITAR:

Opa, fui enganado a acreditar que você usou o Maven pela outra resposta. Se você não estiver, esqueça o que eu disse ...

Outras dicas

Você está usando o Maven?Se sim, existe um truque que permite "ler" um valor POM na sua classe Java.Foi muito útil para mim, bastaria definir o Nome da sua Unidade de Persistência no seu POM, um diferente durante o teste, e pronto.

Variáveis ​​Maven no contexto java

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