DataARTIGO

Automatizando seus testes com DBUnit + HSQLDB

Hoje veremos como deixar nossos testes com DBUnit usando o HSQLDB. O motivo é que queremos rodar o banco em memória.

Olá, pessoal! Hoje veremos como deixar nossos testes com DBUnit usando o HSQLDB. O motivo é que queremos rodar o banco em memória, ou seja, evitarmos a necessidade ter o banco rodando para executar os testes. Ele será iniciado somente quando os testes forem executados. Como você pode observar nesse artigo, sempre temos que ter o MySqlMySQL8 conteúdosMySQL + Adminer + Docker Compose: montando rapidamente um ambiente para usoData · abr 2019Banco de dados MYSQL no PHPStormDev (Back & Front) · jul 2019Criando um ambiente de desenvolvimento PHP mínimo com Docker – Parte 3Dev (Back & Front) · out 2019Ver tudo em Data rodando para que as coisas funcionem e  ter essa dependência no dia-dia enquanto estamos desenvolvendo é ruim, pois vamos exigir que cada desenvolvedor tenha que ter o MySql instalado na maquina etc. Não queremos isso. Queremos que ele faça o checkout do código e possa rodar.

Como já falado nesse artigo, vimos como automatizar nossos testes usando DBUnit + Mysql, porém o que vimos de ruim é o fato de ter sempre o serviço do MySql rodando. E se quisermos rodar isso em memória, como fazer? O HSQLDB nos dá uma mãozinha para rodar nossos testes com o HSQLDB. É muito simples: basta alterarmos o hibernate.cfg.xml e ter o .jar do HSQLDB adicionado ao projeto.

Vou considerar que você tem o projeto anterior, mas caso não tenha, siga os passos do primeiro post e mude apenas o arquivo do hibernate.cfg.xml.

1. O primeiro passo é criar o arquivo hibernate.cfg.xml com as configurações do banco onde os testes serão executados:

<hibernate-configuration>
 <session-factory>
 <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
 <property name="hibernate.connection.url">jdbc:hsqldb:mem:db</property>
 <property name="hibernate.connection.username">sa</property>
 <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
 <property name="hibernate.show_sql">true</property>
 </session-factory>
</hibernate-configuration>

Pronto! Feito isso basta rodar os testes novamente. O resultado é Green .  Simples, não? Assim tiramos a dependência do MySql.

Vou ficando por aqui…

Abraços!

é Bacharel em Sistemas de Informação e Especialista em Gestão e Estratégia de Negócios. Trabalha com TI desde 2003 e possui as certificações SCJP 5 e SCM. Trabalhou na IBM Brasil como Analista Programador Java, passou pelo laboratório da Enterprise Computing Lab (ECL) HP como Software Engineer, Ci&amp;T como Engenheiro de Software em projeto JEE. Tem experiência internacional em Índia, Dubai e Londres. Atualmente é cofundador da ITSLabs (www.itslabs.com.br), uma start-up focada na criação de produtos web e mobile para start-ups. Também é autor dos livros "Guia do Exame SCJP", "Guia Prático JEE com Frameworks" e "TDD na prática".

Ver perfil