Introdução

Neste tutorial, vamos explorar como utilizar Groovy com o framework Grails para construir aplicações web ágeis. Grails é um framework que facilita o desenvolvimento de aplicações web, permitindo que os desenvolvedores se concentrem na lógica de negócios em vez de se perderem em detalhes técnicos. Durante o processo, você aprenderá a implementar testes automatizados utilizando a biblioteca Spock, que oferece uma abordagem rica e intuitiva para testes em Groovy. Além disso, abordaremos a configuração da integração contínua com Jenkins, permitindo que seu fluxo de trabalho de desenvolvimento se beneficie de testes automatizados de forma eficiente e confiável. Este artigo é voltado para desenvolvedores que desejam levar suas habilidades em Groovy e Grails a um novo nível, criando aplicações testáveis e robustas.

Etapas

  1. Configuração do Ambiente de Desenvolvimento

    Antes de começarmos, assegure-se de ter o JDK e o Grails instalados em sua máquina. Verifique as versões usando os comandos `java -version` e `grails -version`. Caso não tenha, siga as instruções oficiais para instalação.

    commands
    # Verificar versões instaladas
    java -version
    grails -version

  2. Criação do Projeto Grails

    Use o comando Grails para criar um novo projeto. Execute `grails create-app nome-do-projeto` em seu terminal. Isso gerará uma estrutura básica de aplicação Grails com as pastas necessárias.

    commands
    grails create-app myapp

  3. Criação do Dominio `Produto`

    Adicione um novo domínio chamado `Produto` com atributos como `nome` e `preco`. Utilize o comando `grails create-domain-class Produto` para criar a classe de domínio.

    Produto.groovy
    package myapp
    
    class Produto {
        String nome
        BigDecimal preco
        static constraints = {
            nome blank: false
            preco min: 0.0
        }
    }

  4. Criação do Controle `ProdutoController`

    Gere um controlador para o domínio `Produto` com os métodos CRUD básicos utilizando o comando `grails create-controller Produto`. Esse controlador será responsável por gerenciar as requisições HTTP.

    ProdutoController.groovy
    package myapp
    
    class ProdutoController {
        def produtoService
    
        def index() {
            respond Produto.list()
        }
    
        def save(Produto produto) {
            if (produto.save(flush: true)) {
                redirect(action: 'index')
            } else {
                render(view: 'create', model: [produto: produto])
            }
        }
    }

  5. Implementação do Serviço `ProdutoService`

    Crie o serviço `ProdutoService` para encapsular a lógica de negócio, utilizando o comando `grails create-service Produto`. Esse serviço consumirá o repositório do domínio `Produto`.

    ProdutoService.groovy
    package myapp
    
    class ProdutoService {
        def listarProdutos() {
            Produto.list()
        }
    }

  6. Configuração do Spock para Testes Automatizados

    Adicione a dependência do Spock ao arquivo `build.gradle` para configurar os testes automatizados. O Spock permite escrever testes de forma fluente e expressiva.

    build.gradle
    dependencies {
        testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0'
    }

  7. Implementação de Testes com Spock

    Crie a classe de testes para o domínio `Produto` utilizando o Spock. Essa classe irá validar as regras de negócio e as operações do serviço implementado.

    ProdutoSpec.groovy
    package myapp
    
    import spock.lang.Specification
    
    class ProdutoSpec extends Specification {
        def 'validar produto com preço negativo não deve ser salvo'() {
            given:
            def produto = new Produto(nome: 'Produto Teste', preco: -10.0)
    
            when:
            def resultado = produto.validate()
    
            then:
            !resultado
        }
    }

  8. Configuração do Jenkins para Integração Contínua

    Para configurar a integração contínua com Jenkins, crie um novo job no Jenkins, aponte para o repositório do seu projeto e configure os passos de build e teste usando o comando `grails test-app` para rodar os testes automatizados.

    commands
    # Execute o comando para rodar testes no Jenkins
    grails test-app

  9. Executando a Aplicação

    Finalmente, execute sua aplicação Grails usando o comando `grails run-app`. Acesse o aplicativo no navegador através do endereço `http://localhost:8080/produto`.

    commands
    grails run-app

Conclusão

Neste tutorial, você aprendeu como implementar uma aplicação web ágil utilizando Groovy com Grails, incluindo a criação de classes de domínio, controladores e serviços. Exploramos também a implementação de testes automatizados com Spock e a configuração de integração contínua utilizando Jenkins. Com estas práticas, você está preparado para desenvolver aplicações mais resilientes e escaláveis, além de assegurar a qualidade do seu código através de testes automatizados.

Hashtags

#Grails #Groovy #Spock #IntegraçãoContínua #Jenkins #DesenvolvimentoÁgil