Testando classes Java com Groovy

Como melhorar a manutenibilidade dos nossos testes?

Um dos maiores problemas dos testes que vemos aqui na Touch Health é a falta de legibilidade. É saber o que de fato o teste faz e que cenário ele usa. Para modificá-lo é preciso antes de tudo entendê-lo e isso costuma levar tempo se o teste é complexo e ilegível. Um código legível é aquele que consegue executar uma ação com o menor número de instruções possíveis. Como estamos falando de legibilidade para um ser humano, é importante que tais instruções sejam claras para uma pessoa. Não adianta um código ser curto e ilegível. O exemplo abaixo — em Ruby — retorna a quantidade de caracteres em um arquivo. Ele possui apenas uma linha, mas não é legível.

Como melhorar testes Java usando Groovy?

Groovy é uma linguagem que roda em cima da JVM e possui uma sintaxe bem similar à do Java. Ela possui recursos nativos bem interessantes que podem tornar nossos testes mais simples de escrever e de entender. Veremos alguns desses recursos a seguir.

Menor Verbosidade

Veja o exemplo de uma classe escrita em Java:

Mocks

Testes unitários necessitam de mocks. Em Java, usamos bibliotecas como o EasyMock ou Mockito para construí-los. Em Groovy podemos fazer isso nativamente usando a técnica Map Coercion:

Fluência

Algumas bibliotecas como o Hamcrest fornecem meios de tornar nossos testes mais fluentes e legíveis:

Outro utilitários

Groovy ainda possui outras facilidades como:

Manipulação de arquivos

Datas

Coleções

GStrings

Em Groovy, é possível interpolar variáveis e textos literais em uma string:

Configurando o ambiente

Para configurar o suporte a Groovy em seu projeto Maven, adicione a dependência ao groovy-all e configure o plugin groovy-eclipse para que compile seus arquivos .groovy em bytecodes.

Conclusão

Com Groovy podemos escrever testes menos verbosos e mais legíveis. Além disso, ganhamos utilitários para manipulação de Datas, Arquivos e Listas e uma api de mocks nativa. A curva de aprendizado para quem desenvolve em Java é baixa, já que sua sintaxe foi baseada na linguagem da Oracle.

thdesenvolvedores

Blog de desenvolvimento da Touch Health

Bruno Viana

Written by

thdesenvolvedores

Blog de desenvolvimento da Touch Health