Testes na camada DAO

Gostaria de saber como vocês costumam fazer os testes de DAOs, estou utilizando um banco de testes porém em casos de relacionamento ManyToOne como por exemplo na entidade Cidade eu dependo de ter pelo menos um Estado, no Estado um País e assim por diante:

@Entity
@Table(name = "cidade")
public class Cidade {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;

	@Column
	private String nome;

	@ManyToOne
	@JoinColumn(name = "estado_id")
	@ForeignKey(name = "fk_cidade_estado")
	private Estado estado;
}

Como vocês resolvem isso, pré alimentando o banco? Persistindo o Estado diretamente na classe de teste do DAO da Cidade?

Aproveito para pedir um exemplo de projeto Open que tenha esse tipo de teste caso alguém conheça.

Obrigado

Eu costumo usar o DBUnit(http://dbunit.sourceforge.net/), com ele você pode especificar os dados que quer inserir no banco antes de executar o teste e no final você tem a opção de limpar tudo.