Artigo Java Magazine 48 - Iniciando com o DbUnit

Artigo publicado pela Java Magazine 48.

Testes que envolvem bancos de dados são geralmente trabalhosos, pois é necessário configurar o estado do banco antes de cada teste, montando scripts para populá-lo e comparar seus registros (tarefas que podem demandar conhecimentos profundos em SQL). O DbUnit oferece uma alternativa aos testes manuais, e apresenta uma forma elegante de resolver esses problemas através de diversas funcionalidades que facilitam a vida do desenvolvedor.

Testes e dados

Como sabemos, os testes representam uma etapa fundamental no desenvolvimento de qualquer software, e nessa etapa as atividades de teste de unidade são sem dúvida as mais conhecidas. Em aplicações Java, testes de unidade são geralmente criados e executados com auxílio de frameworks de testes, a exemplo do JUnit. Apesar de contribuir bastante na execução de testes, o JUnit oferece apenas funcionalidades básicas de teste, como os métodos assertXYZ(). Validações mais elaboradas ou mais específicas não estão presentes como, por exemplo, aquelas referentes a banco de dados.

A utilização de um SGBD, assim como de qualquer outro sistema externo ou auxiliar, exige que testes específicos sejam realizados. Isso implica em verificar se os dados do sistema são gravados e recuperados de forma correta. Verificações desse tipo nem sempre são simples, pois podem exigir codificação extra em SQL ou a criação de diversas classes auxiliares. Por conta disso, a maioria das verificações de banco de dados é feita manualmente, o que propicia erros e impede uma automatização total do processo.

DbUnit

O DbUnit é uma extensão do JUnit que oferece funcionalidades específicas para testes envolvendo banco de dados. O framework possui métodos específicos para comparação de registros, e facilita a carga de registros e a “limpeza” do banco (por exemplo, depois de executar um teste que faça inserções de dados). Essas facilidades permitem configurar a base de dados no estado desejado para cada teste.

O DbUnit se fundamenta em três conceitos principais: IDatabaseConnection, IDataSet e DatabaseOperation.

IDatabaseConnection

A interface IDatabaseConnection representa uma conexão com o banco de dados através de JDBC. O DbUnit oferece suporte a conexões simples através da classe DatabaseConnection ou conexões de Datasource através da classe DatabaseDataSourceConnection.

IDataSet

A interface IDataSet representa um conjunto de dados separados logicamente em tabelas. As principais operações do framework são executadas sobre essa interface, e as abstrações são relativamente simples: linhas, colunas, registros etc.

Os conjuntos de dados podem ser originários de praticamente qualquer repositório, e o DbUnit já traz diversas implementações prontas de IDataSet, algumas das quais são exibidas na Tabela 1 (a utilização dessa interface será demonstrada posteriormente).

Tabela 1. Principais implementações de IDataSet.
Implementação Descrição

DatabaseDataSet"

[...] continue lendo...

Artigos relacionados