EJB + JUnit - compartilhem sua experiência

14 respostas
felipe_gdr

Olá!

Gostaria de configurar um ambiente de testes para a camada de negócio de meu aplicativo que usa EJB 3.1 e JBoss 7.1.1.

Uso JUnit para criar testes de métodos simples, que não acessam o banco ou dependem de CDI. Gostaria de colocar todos os métodos dos EJB em testes unitários, inclusive os que acessam o banco para incluir/excluir pesquisar entidades.

Encontrei alguns recursos na internet, alguns recomendam o uso do Cactus, outros usam OpenEJB, Mock Objects, etc.

Alguém já criou um ambiente de testes parecido com esse que preciso? Seria legal ouvir a experiência de vocês.

Abs!

14 Respostas

felipe_gdr

Encontrei o Arquillian, da JBoss. Me pareceu ser a ferramenta mais moderna para o que eu preciso.

Ela possibilita testar em containers embedded, managed e remotos. Na documentação deles (que é muito boa, aliás), tem exemplos de configuração usando JBoss, Glassfish e Weld.

Possibilita debug facilmente, testar persistência, criar diferente profiles de teste no POM.

Pra quem estiver interessado:

http://arquillian.org/guides/getting_started/
http://arquillian.org/guides/getting_started_rinse_and_repeat/
http://arquillian.org/guides/testing_java_persistence/
http://arquillian.org/guides/get_started_faster_with_forge/

Abs!

Hebert_Coelho

Com EJB 3.1 você pode simular um conteiner na hora do teste.

Procure por EJB 3.1 junit

Eu achei isso aqui ao procurar: http://javahowto.blogspot.com.br/2009/12/ejb-lite-testing-with-junit-and.html

Eu li isso em um livro, depois vou até fazer um post. [=

felipe_gdr

Legal, parece ser mais “lightweight”.

Será que essa modalidade tem flexibilidade de teste de JPA, por exemplo, posso setar um persistence.xml que aponta para um banco de teste (tipo um Derby).

Hebert_Coelho

felipe_gdr:
Legal, parece ser mais “lightweight”.

Será que essa modalidade tem flexibilidade de teste de JPA, por exemplo, posso setar um persistence.xml que aponta para um banco de teste (tipo um Derby).

Pelo que li ele simula um container EJB lite. Então você terá EJB local, transações e algumas outras coisinhas. [=
Ele deve suportar o JPA. [=

Se não, vai ser triste… muito triste. MAhuahuah

Hebert_Coelho

Mas estava pensando, bastaria você no teste buscar um EJB e desse EJB chamar o outro que sua transação espalharia.

Desse modo, se seus métodos estiverem Required ele pega as transações criadas em quem originou a chamada. [=

felipe_gdr

Pois é, mesmo sendo um container “lite”, não deixa de ser um container EJB, e como tal, deve suportar a injeção de EntityManagers, controle de transação, etc.

Hebert_Coelho

felipe_gdr:
Pois é, mesmo sendo um container “lite”, não deixa de ser um container EJB, e como tal, deve suportar a injeção de EntityManagers, controle de transação, etc.
Que tal você fazer o teste e depois compartilhar? :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Hebert_Coelho
Na boa, só não faço por um motivo... vou te mostrar o q está em meu copiar colar agora:
if (isOpenJPA()) {
            Path<Object> objectPath = mainRoot.get(joinName);

            return objectPath.getModel().getBindableJavaType().getCanonicalName();
        }
É rapaz... to fazendo a versão 2.0 do meu framework open source para criteria, e o OpenJPA tá me fazendo arrancar os cabelos. Acho que semana ta pronto com 100% de cobertura! >= )
felipe_gdr

hahahaha, pô Hebert, eu tô me divertindo com o Arquillian aqui. Você que sugeriu EJBContainer!!! :slight_smile:

felipe_gdr

Show de bola! Como chama esse framework?

Hebert_Coelho

felipe_gdr:
hahahaha, pô Hebert, eu tô me divertindo com o Arquillian aqui. Você que sugeriu EJBContainer!!! :)
Poxa, nem queria mesmo. =(

Maahahuha

Hebert_Coelho

felipe_gdr:
Show de bola! Como chama esse framework?
EasyCriteria

http://easycriteria.uaihebert.com.br

Ele é testado com Hibernate, EclipseLink e OpenJPA (que tá me tirando os cabelos).

A versão exibida aí é a 1.0.

Quando vier a 2.0 vai ser mega boladona plus tropa de elite ++. O.o

A API está bem mais simples. [=

Hebert_Coelho

Ufa.

O OpenJPA é muito chato! -_-’’

Consegui finalizar tudo, olha a imagem em anexo. [=

Agora é abrir um bug no Hibernate que descobri, no OpenJPA também achei bug e o do EclipseLink eu já tenho um bug aberto, mas o povo ainda não resolveu. =/


felipe_gdr

100%, aí sim hein! Parabéns Hebert!!!

Criado 9 de fevereiro de 2013
Ultima resposta 9 de fev. de 2013
Respostas 14
Participantes 2