--
Você está recebendo esta mensagem porque se inscreveu no grupo "java.ce" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jav...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para javace+un...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/javace?hl=pt-BR.
Fabricio, como voce esta fazendo os testes de integracao? Poderia explicar melhor?
Ah, qual servidor de app voce está utilizando?
Fabricio, como voce esta fazendo os testes de integracao? Poderia explicar melhor?
Ah, qual servidor de app voce está utilizando?
Oi Fabricio,É possível fazer isso sem nem mesmo se utilizar do Unitils, basta instanciar o EntityManagerFactory na mão e injetar o EntityManager onde necessário. O próprio Washington Botelhos (@wbotelhos) criou um toolbox para auxiliar durante os testes de integração com JPA, Hibernate e DBUnit, é o jintegrity .
Para garantir que as queries e chamadas ao banco estejam corretas isso funciona bem, mas para garantir que o controle transacional, aspectos, interceptors, DI e outros detalhes do seu container IoC é que não agrega muito. Por isso acho o Spring Testing muito bom, já que praticamente você levanta toda a camada de aplicação no ambiente de testes, ou seja, deixa o ambiente de testes mais próximo do ambiente de produção.
Achei boa a apresentação do CDI, mas querer substitui-lo totalmente pelo Spring, foi meio que forçar a barra.
Não é preciso usar todas as APIs que o Spring disponibilizar, mas em termos de teste de integração, o Spring é melhor. Já faz tempo que ele possui essa solução. Na verdade, não sei como ficar sem esse tipo de testes, considerando que a maioria das apps do mercado envolvem banco. Imagino que ficar subindo servidor de aplicação para ver se um registro foi salvo ou consultado corretamente torna o desenvolvimento praticamente inviável. (alguem ainda faz isso?)
Sobre o arquilian, já brinquei com ele também, mas não achei tão fácil usa-lo.
E tem mais, teste unitário, mesmo com mock não substitui testes de componentes transacionais de forma satisfatória.
Sem contar que os proprios testes do Spring podem ser transacionais, e isso é muito relevante.
Testes de *WS e JMS, por exemplo, realmente são bastante simples.
@Fabricio
Fiquei curioso em ver como o CDI+Hibernate+Unitils funcionariam, mas ainda sobre as transações na aplicação, elas devem ser controladas programaticamente?
2012/5/28 Rodrigo Galba <rodrig...@gmail.com>Achei boa a apresentação do CDI, mas querer substitui-lo totalmente pelo Spring, foi meio que forçar a barra.
É justamente isso que o pessoal está querendo :) Claro que o Spring ainda possui muito mais componentes do que o CDI, mas isso é mais pela idade e maturidade do Spring do que pela superioridade de seu container.
Não é preciso usar todas as APIs que o Spring disponibilizar, mas em termos de teste de integração, o Spring é melhor. Já faz tempo que ele possui essa solução. Na verdade, não sei como ficar sem esse tipo de testes, considerando que a maioria das apps do mercado envolvem banco. Imagino que ficar subindo servidor de aplicação para ver se um registro foi salvo ou consultado corretamente torna o desenvolvimento praticamente inviável. (alguem ainda faz isso?)
Como falei antes, mesmo sem utilizar o Spring não é preciso subir servidor de aplicação para testar sua persistência.
Sobre o arquilian, já brinquei com ele também, mas não achei tão fácil usa-lo.
E tem mais, teste unitário, mesmo com mock não substitui testes de componentes transacionais de forma satisfatória.
Sem contar que os proprios testes do Spring podem ser transacionais, e isso é muito relevante.
Testes de *WS e JMS, por exemplo, realmente são bastante simples.
@Fabricio
Fiquei curioso em ver como o CDI+Hibernate+Unitils funcionariam, mas ainda sobre as transações na aplicação, elas devem ser controladas programaticamente?
O próprio Unitils controla isso. Não é muito complicado, basicamente o que ele faz é criar um escopo de transação para cada teste.
2012/5/28 Rafael Ponte <rpo...@gmail.com>Oi Fabricio,É possível fazer isso sem nem mesmo se utilizar do Unitils, basta instanciar o EntityManagerFactory na mão e injetar o EntityManager onde necessário. O próprio Washington Botelhos (@wbotelhos) criou um toolbox para auxiliar durante os testes de integração com JPA, Hibernate e DBUnit, é o jintegrity .
Tudo o que o Unitils faz dá pra você fazer na mão também. Como o próprio nome sugere, ele é uma típica bibliotecas de utilidades que acho válido utilizar por estas e outras facilidades.
Para garantir que as queries e chamadas ao banco estejam corretas isso funciona bem, mas para garantir que o controle transacional, aspectos, interceptors, DI e outros detalhes do seu container IoC é que não agrega muito. Por isso acho o Spring Testing muito bom, já que praticamente você levanta toda a camada de aplicação no ambiente de testes, ou seja, deixa o ambiente de testes mais próximo do ambiente de produção.
Estes tipos de testes de integração: "controle transacional, aspectos, interceptors, DI e outros detalhes do seu container IoC" é que eu não faço e não lembro a ultima vez que tive problemas com isso. São coisas que hoje em dia são tão simples de se configurar que, se der algum erro, provavelmente não foi do meu código, e sim algum bug do container. Por exemplo, eu não testo, para todas as injeções, se a instância injetada pelo container é a que realmente deveria ser injetada. De qualquer forma, meu testes funcionais acabam pegando alguma coisa que deixei passar.
Resumindo, a intenção de simplificar uma app com CDI é valida, mas existem questões como transações e teste de integração que precisam ser resolvidas.