DSL para criacao de testes unitarios em java: Uma abordagem
inspirada na linguagem racket
DSL; Racket; TDD; JUnit 5; ANTLR4
Desenvolver software de qualidade continua sendo um desafio, devido à
complexidade dos sistemas, à velocidade de entrega, a equipes desalinhadas,
a mudanças frequentes de escopo e outros fatores. Nesse cenário, práticas
como o Test-Driven Development (TDD) podem facilitar a implementação de
testes e melhorar a qualidade do software. Contudo, sua adoção ainda
apresenta limitações, como a complexidade na manutenção dos testes à medida
que a aplicação cresce, exigindo tempo e esforço consideráveis. Para
enfrentar essas dificuldades, esta dissertação propõe uma abordagem que
simplifica a implementação de testes unitários em Java, incentivando a
prática do TDD. A solução consiste em uma Domain-Specific Language (DSL)
chamada JCheck, inspirada na linguagem Racket e integrada ao framework
JUnit 5. O parser da DSL foi gerado com ANother Tool for Language
Recognition, versão 4 (ANTLR4) e a DSL foi incorporada em uma anotação Java
aplicada a métodos, simplificando a especificação dos casos de teste e
integrando-os de forma natural ao processo de desenvolvimento. A abordagem
foi validada através de uma prova de conceito em um cenário realista,
executando testes com diferentes instruções da DSL e avaliando sua
aplicabilidade prática. Como resultado da prova de conceito, a DSL
apresentada atingiu os objetivos da pesquisa, realizando com sucesso testes
unitários em Java de acordo com as instruções fornecidas. Dessa forma,
podemos concluir que a JCheck é uma ferramenta promissora para facilitar a
criação de testes unitários em Java. Além disso, por adotar uma abordagem
que aproxima a definição dos testes dos próprios métodos, a DSL torna mais
fácil a prática do TDD.