Hibernate + Junit

5 respostas
D

Como devo fazer para implementar testes(Junit) com hibernate?

Cada vez que o teste é rodado ele popula a base, o que devo fazer para os dados que foram criados no testes sejam limpos?

Estou fazendo da seguinte forma:

package Hibernate;

import hibernateUtils.HibernateDAO;
import hibernateUtils.SessionFactory;
import junit.framework.Assert;

import org.hibernate.Query;
import org.hibernate.Session;
import org.junit.Test;

import entidades.Endereco;
import entidades.Pessoa;

public class PessoaTest {

	private Endereco endereco = new Endereco("Av Brasil", 742, "87025-000", "Centro","Maringá" , "PR");
	
	@Test
	public void test() { 
		
		Pessoa pessoa = new Pessoa("Diego","92162602", endereco);
		
		HibernateDAO.salva(pessoa);
		
		Session session = SessionFactory.getSession();
		Query sql = session.createSQLQuery("select count(*) from Pessoa where nome = :nome");
		sql.setString("nome", "Diego");
	
		Assert.assertEquals(new Long(1), sql.uniqueResult());
		
	}
			
}

5 Respostas

H

Aqui tem o modelo: JUnit com HSQLDB, JPA e Hibernate

O correto é configurar no persistence para o hibernate realizar o drop-create a cada teste.

O bom é utilizar um banco em memória tipo o HSQLDB ou o Derby.

D

Estou usando o H2Database para os testes.

H

diegocc9:
Estou usando o H2Database para os testes.
Blz.

A idéia é a mesma para qualquer banco. [=

D

Não é mais simples deixar tudo em uma transação e dar rollback no final?

D

É que na vdd não tenho contato com a transação!!

public class HibernateDAO {

	
	public static void salva(Object obj){
	
		Session session = SessionFactory.getSession();
		Transaction transacao = session.beginTransaction();
		
		session.save(obj);
		
		transacao.commit();
		session.flush();
		session.close();
	}
}
Criado 20 de outubro de 2012
Ultima resposta 20 de out. de 2012
Respostas 5
Participantes 3