Teste Unitário Camada de persistência  XML
Índice dos Fóruns » Metodologias de Desenvolvimento e Testes de Software
Autor Mensagem
antoniopopete
Virtual Machine Man

Membro desde: 27/12/2006 02:37:31
Mensagens: 712
Localização: Salvador - BA
Offline

Como vocês testam sua camada de persistência?
Em java.
Muita gente usa JUnit?
Alguém tem algum tutorial sobre isso?
Aplicações web, são complexas de testar, não?Por exemplo o DS, está no JBoss e em tempo de execução ele é localizado, na camada de testes,temos que abstrair isso em um método ou existe uma solução mais rápida?

Antonio Lazaro

[Email]
jgbt
GUJ Master
[Avatar]

Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline

Use DBUnit e seja feliz...

[]´s

João Bier
Desenvolvedor Java
[Email]
Javabuntu
GUJ Master
[Avatar]

Membro desde: 08/02/2007 17:15:32
Mensagens: 1315
Localização: Brasília
Offline

cara o JUnit sempre atendeu nos testes que precisei... mas o DB citado é bem mais específico ao propósito desejado..

This message was edited 1 time. Last update was at 17/04/2008 12:30:04


SCJP 6
SCJD
SCWCD 5
Itil V2
[MSN]
diogosantana
Thread.start()

Membro desde: 03/04/2008 13:42:55
Mensagens: 25
Offline

Você também pode usar técnicas de inversão de controle (IoC).
A framework Spring é muito utilizada para isso.
jgbt
GUJ Master
[Avatar]

Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline

Javabuntu wrote:cara o JUnit sempre atendeu nos testes que precisei... mas o DB citado é bem mais específico ao propósito desejado..


Na verdade vc vai basicamente usar JUnit+DBUnit. DBUnit é uma extensão do JUnit.

[]´s

João Bier
Desenvolvedor Java
[Email]
lavh
GUJ Master

Membro desde: 30/07/2006 16:09:55
Mensagens: 1311
Offline

Minha experiência com testes unitários da camada de persistência sempre foram péssimas!

Normalmente pra inserir em uma tabela, você precisa que tenham dados em mais 2 ou 3 no mínimo.
É aí que começa o drama. No projeto que eu to, tinha tabelas que dependiam de 7 ou 8 outras tabelas,
dai era um inferno fazer os inserts em todas pra testar um mero select.

O DBUnit não ajuda muito e é muito bugado. Eu cheguei a trabalhar um tempo nele pra ajudar corrigir bugs
mais parei.

Solução adotada pela minha equipe: abolição dos testes de DAO.

A gente faz pair-review do código do DAO só pra ver se não tem nada de muito erado, e depois testes mesmos
do DAO só testes funcionais efetuados pela equipe de testes.

Estamos bem felizes com essa solução, e diferente do que alguns temiam, não estamos tendo bugs de DAO em produção.
Muito pelo contrário.

jgbt
GUJ Master
[Avatar]

Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline

Cara,
sempre usei DBUnit e nunca tive problemas. Ja usei ele em projetos com EJB2 CMP e era bem tranquilo. O fato de ter que inserir em varias tabelas não acho problema. Os xmls podem ser gerados a partir de uma base pronta.
Agora se vc possui consultas muito complexas, concordo que pode ficar complicado. Mas tmb acho que seu modelo pode estar focado no banco, e não nos objetos. as vezes acontece(banco legado), entao talvez sua solução foi acertada.

[]´s

João Bier
Desenvolvedor Java
[Email]
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline

Tbm uso DBunit e não tenho grandes problemas.
Porém, a única coisa que me chateia é ter que necessariamente existir primary-keys em todas as tabelas. O JPA, para relacionamentos com join-tables, por default ele cria a tabela de ligação sem atribuir a ela uma PK... e isso dá erro com o DBUnit.

Uma solução é fazer isso:

http://dbunit.wikidot.com/noprimarykeytable

... mas dá muito trampo criar "pseudo-keys" em filters para cada relacionamento e nos vários data-sets.

Como vc se vira com isso JGBT ?

... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/

[Email] [MSN]
renatoes
JavaBaby
[Avatar]

Membro desde: 04/09/2006 20:00:45
Mensagens: 84
Localização: Londrina-PR
Offline

Bom dia,

Tenho uma dúvida mais conceitual: é válido realizar testes unitários da camada de persistência através das classes DAO de um sistema, ou devo separar os testes entre somente na camada de persistência (utilizando por exemplo o dbUnit) e somente nas classes DAO (utilizando possivelmente Mock Object)?
Sou novato no pensamento TDD, porém creio que será de grande valia para minha experiência em programação.

Agradeço desde já

self.life = rand()
Our will will guide us to a place where we belong.
renatoes
JavaBaby
[Avatar]

Membro desde: 04/09/2006 20:00:45
Mensagens: 84
Localização: Londrina-PR
Offline

Boa tarde,

Talvez nao fui mto claro com a minha duvida anterior. Por algum motivo nao muito claro fiz uma baita confusao com o conceito de camada de persistencia. De qualquer maneira, vou explicar o que ocorre por aqui, uma vez que pode ser a realidade de outro programador.
Nosso sistema Web nao possuia suite de testes e esta a meu cargo desenvolve-los (estou abordando a camada de persistencia atualmente). O sistema utiliza um arquivo de properties com as queries utilizadas, e minha duvida no post anterior eh justamente em relacao ao dominio dos testes (se devo e como separar os testes unitarios nas classes DAO com os testes unitarios do banco). Como nem todos os metodos das classes DAO mapeiam uma uma query, possivelmente terei que adicionar outras funcionalidades para realizar os testes unitarios do banco.
Entao minha duvida eh: qual a melhor solucao para esse caso?

Agradeco a atencao

self.life = rand()
Our will will guide us to a place where we belong.
 
Índice dos Fóruns » Metodologias de Desenvolvimento e Testes de Software
Ir para:   
Powered by JForum 2.1.8 © JForum Team