Hibernate + Junit

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:

[code]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());
	
}

}
[/code]

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.

Estou usando o H2Database para os testes.

[quote=diegocc9]Estou usando o H2Database para os testes.[/quote]Blz.

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

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

É 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();
	}
}