segunda-feira, 4 de julho de 2016

DbUnit

Como prometido no post anterior, hoje vou testar e falar sobre o DbUnit. Para quem não está familiarizado, o DbUnit é uma extensão para o JUnit para Teste de Unidade para aplicações com banco de dados.

Através do DbUnit é possível definir e verificar o estado do banco de dados em um dado instante durante o teste. É possível inserir dados e ler dados do banco através de arquivos simples XML.

Imagine que você precise testar interações em seu código que geram dados que são armazenados, alterados ou excluídos do banco de dados. É possível verificar sua aplicação através do DBUnit da mesma maneira que se faz um teste para a aplicação em si. Por exemplo, imagine que sua aplicação é um sistema de compra e venda, você quer testar esse sistema, sua loja começa com certos produtos que podem ser inseridos no banco através do XML simples e também verificadas. Após cada compra, sua loja deve remover o produto e alterar a informação sobres compras realizadas. Todas essas situações podem ser verificadas com o DbUnit.

Para fazer um teste simples, eu segui o tutorial do seguinte site: Marc Philipp. Neste caso temos apenas uma tabela de pessoas com idade, nome e último nome. Essas pessoas podem ser adicionadas e também podem ser buscadas. Para realizar esse tutorial eu usei:
  • Netbeans
  • Projeto Maven Aplicação Java
  • JUnit 4.12
  • Hamcrest 1.3
  • DbUnit 2.5
  • O banco de dados H2
  • Spring Data
  • Hibernate Core e EntityManager
Começamos criando o POJO Person que define a entidade pessoa:

Criamos depois o repositório. Eu escolhi usar o JpaRepository que cuidada de cada detalhe do acesso aos dados no banco:

Além disso precisamos definir o DataSource e uma EntityManager. Esses são criados através de uma classe de configuração do Spring que define beans para o DataSource e o EntityManager:

Finalmente vamos trabalhar em nossos testes. Queremos conectar com e modificar o banco de dados. Fazemos isso através do repository obtido do contexto gerado pela configuração descrita anteriormente. Vamos inserir no banco os seguintes dados:

Essa é a primeira facilidade que verificamos no DbUnit, poder inserir dados através de um XML muito simples. Depois de inseridos esses dados, vamos testar se foram inseridos corretamente e o que acontece caso se pesquise um nome não inserido:

Podemos observar na linha 42 a leitura do arquivo XML e na linha 49 a inserção dos dados no banco. Já nas linhas 53 e 62 temos os testes de busca pelo objeto que possui o nome Charlie e busca por um objeto inexistente no banco.

É evidente a infinidade de coisas interessante que se pode fazer com essa ferramenta, espero ter ajudado. O projeto completo pode ser clonado através do Git do seguinte repositório: https://leandro_stlima@bitbucket.org/leandro_stlima/dbunit.git.

No próximo post falarei sobre o Mockito, frameworking para Mocking ou maquete, emulação, de objetos em Testes de Unidade.

Nenhum comentário:

Postar um comentário