EJB + JUnit - compartilhem sua experiência

14 respostas
F

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

F

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!

H

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. [=

F

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).

H

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

H

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. [=

F

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.

H

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:

H
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! >= )
F

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

F

Show de bola! Como chama esse framework?

H

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

Maahahuha

H

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. [=

H

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. =/


F

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

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