DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket - SILVA, Ruan Carlos Alves da (2025)
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 contribuir para a melhoria da qualidade do software. Contudo, sua adoção ainda apresenta limitações, como a complexidade na elaboração e na manutenção manual dos testes à medida que a aplicação cresce, o que exige tempo e esforço consideráveis para sustentar a prática. Para enfrentar essas dificuldades, esta dissertação propõe uma abordagem que simplifica a implementação e manutençã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 por meio de uma prova de conceito em um cenário realista, executando testes com diferentes instruções da DSL e avaliando o esforço de escrita da DSL por meio da contagem de linhas de código. 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, além de demonstrar, por meio da análise da contagem de linhas de código, que sua utilização pode reduzir o esforço na escrita dos testes unitários. 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.