JUnit

Pessoal tenho q implementar um teste de unidade para a classe DaoEmail( q esta aí em baixo) mas o JUnit deve rodar independente do estado do banco de dados. Alguem pode dar alguma dica de como fazer?

public class DaoEmail {
private Connection conexao;

public ResultSet res = null;

public DaoEmail() throws SQLException {
	this.conexao = ConexaoHSQLDB.getConnection();
}

public boolean inserir(Email mail) {

	boolean testa = false;

	try {

		Statement stmt = this.conexao.createStatement();
		String query = "INSERT INTO EMAIL(id,email,id_contato)VALUES("
				+ null + ",'" + mail.getEmail() + "','"
				+ mail.getId_contato() + "')";
		res = stmt.executeQuery(query);
		stmt.close();
		testa = true;
	} catch (SQLException e) {
		System.out.println("Erro duranta a inserção:" + e.getMessage());
	}

	return testa;
}

public boolean excluir(int id) {

	boolean testa = false;

	try {

		Statement stmt = this.conexao.createStatement();
		String query = "DELETE FROM EMAIL WHERE id_contato=" + id;
		res = stmt.executeQuery(query);
		stmt.close();
		testa = true;
	} catch (SQLException e) {
		System.out.println("Erro duranta a exclusão:" + e.getMessage());
	}

	return testa;

}

public boolean listar() {

	boolean testa = false;

	try {

		Statement stmt = this.conexao.createStatement();
		String query = "SELECT EMAIL FROM EMAIL;";
		res = stmt.executeQuery(query);
		while (res.next()) {
			String e = res.getString("email");
			System.out.println(e);
			System.out.println();
		}
		stmt.close();

		if (res.next()) {
			testa = true;
		} else {
			testa = false;
		}

	} catch (SQLException e) {
		System.out.println("Erro duranta a pesquisa:" + e.getMessage());
	}

	return testa;
}

public boolean listar_por_id(int id) {

	boolean testa = false;

	try {

		Statement stmt = this.conexao.createStatement();
		String query = "SELECT EMAIL FROM EMAIL WHERE id_contato=" + id;
		res = stmt.executeQuery(query);
		while (res.next()) {
			String e = res.getString("email");
			System.out.println(e);
			System.out.println();
		}
		stmt.close();

		if (res.next()) {
			testa = true;
		} else {
			testa = false;
		}

	} catch (SQLException e) {
		System.out.println("Erro duranta a pesquisa:" + e.getMessage());
	}

	return testa;
}

}

Faça inserção, atualização e busca no banco de maneira ordenada, excluindo o registro por último…

Faça inserção, atualização e busca no banco de maneira ordenada, excluindo o registro por último…

O problema é q so sei fazer testes bem simples. Não faço a minima ideia de como fazer esse aí, me deram a dica de ler sobre DBUnit e junitreport com ant, mas apesar de ler materiais na internet (q falam muito pouco) nao entendo nada sobre isso.

Pelo o que entendi, você está querendo testar a sua camada de persistência. Se for isso mesmo, tem na penúltima edição da Mundo Java (edição 24) um artigo de testes unitários para a camada de persistência. E os autores falam também do DBUnit. Tente dar uma lida que pode te ajudar.
Mas pode ser que você queira, na verdade, testar a sua camada de negócios. Neste caso, é comum o uso de Mock Objects. Existem alguns frameworks que te ajudam neste trabalho: EasyMock e jMock. Mas antes de baixar algum framework entenda o que são os MockObjects. Acho que uma pesquisa na internet já é o bastante (google e wikipedia).
Se quiser mais referências sobre testes unitários para a camada de negócios a Mundo Java #23 também traz um artigo.

OBS1 - Não trabalho para a revista. Só estou te indicando porque achei os artigos bem didáticos. Podem te ajudar, independentemente do seu nível de conhecimento do assunto.

OBS2 - É mais comum nomear as classes com o nome do padrão no final (EmailDAO ao invés de DAOEmail).