Cucumber com Spring Boot – Como iniciar com essa Ferramenta?

Você já criou algum projeto Cucumber com Spring Boot? ele uma ferramenta de automação de testes de software que permite escrever testes em uma linguagem natural, conhecida como Gherkin. Ele é amplamente utilizado para testar aplicações de software, especialmente em ambientes Agile e de Desenvolvimento Orientado a Comportamento (BDD – Behavior Driven Development).

Hoje vamos criar um pequeno projeto com Cucumber e discutir como integrá-lo a um projeto Spring Boot para realização de testes de comportamento.

cucumber com spring boot

O que é o Cucumber?

O Cucumber é uma ferramenta que facilita a escrita e execução de testes automatizados usando uma linguagem simples e legível para pessoas não técnicas.

Ele permite descrever o comportamento esperado de um sistema através de exemplos escritos em formato Gherkin, que é composto por palavras-chave como Given, When, Then, And e But.

Características Principais do Cucumber:

  1. Colaboração: Uma das principais vantagens do Cucumber é a sua capacidade de promover a colaboração entre diferentes membros da equipe, incluindo desenvolvedores, testadores, gerentes de produto e stakeholders. Todos podem participar da definição dos requisitos e entender as funcionalidades por meio dos cenários escritos em Gherkin.
  2. Automatização de Testes: O Cucumber permite a automação dos testes escritos em Gherkin por meio da definição de Steps Definitions (definições de passos), onde os passos do cenário são mapeados para implementações de código em uma linguagem de programação, como Java, Ruby, JavaScript, entre outras.
  3. Reutilização e Manutenção: Com a separação dos cenários descritos em Gherkin e suas implementações de código, é possível reutilizar passos comuns em vários cenários, o que facilita a manutenção e evolução dos testes à medida que a aplicação cresce e muda ao longo do tempo.

Integrando o Cucumber com Spring Boot

A integração do Cucumber com o Spring Boot é uma maneira poderosa de testar o comportamento das aplicações construídas nesse framework. Vamos passo a passo pela configuração necessária para esta integração.

Adicione as dependências do Cucumber no arquivo de configuração do seu projeto Spring Boot pom.xml para Maven:

<dependencies>
    <!-- Dependências do Spring Boot -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <!-- Dependências do Cucumber -->
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>7.2.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-spring</artifactId>
        <version>7.2.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>7.2.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Se em seu projeto você está utilizando Gradle, você pode adicionar as dependências da seguinte forma:

dependencies {
    testImplementation 'io.cucumber:cucumber-java:7.2.0'
    testImplementation 'io.cucumber:cucumber-spring:7.2.0'
}

Agora que temos as dependências, precisamos realizar alguns procedimentos:

Crie arquivos .feature contendo os cenários de teste na linguagem Gherkin dentro do diretório src/test/resources/features/sample.feature, com o seguinte conteúdo:

Feature: Teste de exemplo

  Scenario: Verificação de operação
    Given um aplicativo de exemplo está em execução
    When eu faço um teste
    Then o teste deve passar

Observação: estes valores serão utilizados na classe seguinte, para fixar ainda melhor o entendimento

Crie classes Java que atuem como Steps Definitions (definições de passos) para os cenários definidos nos arquivos .feature. Essas classes conterão métodos Java que correspondem aos passos definidos nos cenários.

Crie uma classe de configuração que defina o Runner do Cucumber para executar os testes.

Exemplo de uma classe de configuração:

package br.com.virandoprogramador.test.cucumber


import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;

public class SampleSteps {

    @Given("um aplicativo de exemplo está em execução")
    public void aSampleApplicationIsRunning() {
      /*A lógica do teste do teu projeto*/
        System.out.println("O aplicativo Virando porgramdor está em execução...");
    }

    @When("eu faço um teste")
    public void iPerformATest() {
      /*A lógica do teste do teu projeto*/
        System.out.println("Executando um teste...");
    }

    @Then("o teste deve passar")
    public void theTestShouldPass() {
      	/*A lógica do teste do teu projeto*/
        System.out.println("Teste aprovado!");
    }
}

Agora, crie a classe de configuração do Cucumber que usará o Spring Boot para execução dos testes:

package br.com.virandoprogramador.cucumber;

import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;

@RunWith(Cucumber.class)
@CucumberOptions(
    features = "src/test/resources/features", // Diretório dos arquivos .feature
    glue = "stepdefinitions", // Pacote onde estão as classes Steps Definitions
    plugin = {"pretty", "html:target/cucumber-reports"} // Configuração de relatórios
)
@SpringBootTest(classes = DemoApplication.class)
public class CucumberIntegrationTest {
    // Esta classe não precisa de implementação
}

Com esses passos, você terá uma estrutura básica de um projeto Spring Boot integrado com o Cucumber para executar testes de comportamento.

Não se esqueça de que o arquivo de recurso .feature e as classes de definição de passos estão corretamente configurados de acordo com sua lógica de teste.

Bom por fim é isso! terminamos nosso exemplo simples de como iniciar uma configuração em um projeto Spring Boot, existem vários e vários cenários de testes onde o Cucumber pode ser utilizado, irei criar muitos outros artigos no futuro em relação a esta ferramenta.

Benefícios do Uso do Cucumber:

  • Compreensão dos Requisitos: Gherkin permite uma definição clara e compreensível dos requisitos do software, ajudando a evitar ambiguidades e garantindo uma visão compartilhada entre todos os envolvidos no projeto.
  • Testes Mais Legíveis: Os cenários escritos em Gherkin são fáceis de ler e entender, mesmo para pessoas não técnicas, o que facilita a comunicação e a revisão dos casos de teste.
  • Automatização de Testes BDD: Ao implementar os passos dos cenários, o Cucumber pode executar automaticamente os testes, verificando se o comportamento do sistema está de acordo com as especificações.
  • Feedback Rápido: Com testes automatizados, é possível obter feedback instantâneo sobre a funcionalidade do software, identificando problemas assim que são introduzidos no código.

Quais os Benefícios da integração do Cucumber com Spring Boot?

Integrar o Cucumber com Spring Boot oferece benefícios significativos. O Spring Boot é um framework popular para o desenvolvimento de aplicativos Java baseados em microsserviços, e sua integração com o Cucumber permite a execução de testes de comportamento automatizados dentro do ecossistema Spring.

Isso simplifica a configuração dos testes e permite que os desenvolvedores aproveitem a funcionalidade e facilidades oferecidas pelo Spring Boot, como injeção de dependência, gerenciamento de contexto e configurações de aplicativos, enquanto realizam testes de aceitação, garantindo uma melhor cobertura de testes e mais confiabilidade nas funcionalidades implementadas.

Qual é a diferença entre o Cucumber e outras ferramentas de testes automatizados?

A principal diferença do Cucumber em relação a outras ferramentas de testes automatizados está na sua abordagem centrada no comportamento.

Enquanto muitas ferramentas se concentram na automação de testes a nível de unidade ou de interface do usuário, o Cucumber adota uma abordagem BDD, permitindo que testes de comportamento sejam escritos em linguagem natural (Gherkin).

Exemple de outras ferramentas:

  • Junit
  • Mockito
  • Rest Assured

Isso permite uma colaboração melhor entre equipes técnicas e não técnicas para definir e validar os requisitos do software. O Cucumber é especialmente adequado para testes de aceitação e integração, garantindo que o software atenda aos requisitos de negócio de forma clara e precisa.

Finalizando Cucumber com Spring Boot

Em resumo, o Cucumber é uma ferramenta valiosa para equipes de desenvolvimento de software que desejam criar testes automatizados baseados em comportamento, promovendo a colaboração entre diferentes membros da equipe e ajudando a garantir que o software atenda aos requisitos de negócio de forma clara e precisa.

Avalie o Conteúdo

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *