En aquest tema, explorarem dues característiques avançades de Gherkin i Cucumber: els fons (Backgrounds) i els hooks. Aquestes eines són essencials per millorar la llegibilitat i l'eficiència dels teus escenaris de prova.

Fons (Backgrounds)

Què és un Fons?

Un fons en Gherkin és una secció que es defineix al començament d'un fitxer de característiques i que s'executa abans de cada escenari en aquest fitxer. És útil per establir un context comú per a tots els escenaris, evitant la repetició de passos inicials.

Com utilitzar un Fons

  1. Definició del Fons: Es col·loca just després del títol de la característica i abans dels escenaris.
  2. Sintaxi:
    Feature: Gestió d'usuaris
    
    Background:
      Given l'usuari està autenticat
      And l'usuari es troba a la pàgina de perfil
    
    Scenario: Actualitzar el nom d'usuari
      When l'usuari canvia el seu nom a "Joan"
      Then el nom d'usuari hauria de ser "Joan"
    
    Scenario: Actualitzar l'email
      When l'usuari canvia el seu email a "[email protected]"
      Then l'email hauria de ser "[email protected]"
    

Beneficis dels Fons

  • Redueix la duplicació: Els passos comuns es defineixen una sola vegada.
  • Millora la llegibilitat: Els escenaris són més curts i fàcils de llegir.
  • Facilita el manteniment: Els canvis en el context comú només s'han de fer en un lloc.

Hooks

Què són els Hooks?

Els hooks són fragments de codi que s'executen en punts específics del cicle de vida de l'execució de Cucumber. S'utilitzen per configurar o netejar l'entorn de prova.

Tipus de Hooks

  1. Before Hooks: Executats abans de cada escenari.
  2. After Hooks: Executats després de cada escenari.
  3. BeforeStep i AfterStep Hooks: Executats abans i després de cada pas, respectivament.
  4. BeforeScenario i AfterScenario Hooks: Similar als Before i After, però específics per a escenaris.

Exemple de Hooks

import io.cucumber.java.Before;
import io.cucumber.java.After;

public class Hooks {

    @Before
    public void setUp() {
        // Configuració inicial abans de cada escenari
        System.out.println("Configurant l'entorn de prova");
    }

    @After
    public void tearDown() {
        // Neteja després de cada escenari
        System.out.println("Netejant l'entorn de prova");
    }
}

Beneficis dels Hooks

  • Configuració i neteja automàtica: Automatitza tasques repetitives abans i després dels escenaris.
  • Flexibilitat: Permet personalitzar el comportament de les proves segons les necessitats.
  • Organització: Manté el codi de configuració separat dels escenaris, millorant la claredat.

Exercici Pràctic

Objectiu

Implementar un fons i hooks en un projecte Cucumber per gestionar la configuració i neteja de l'entorn de prova.

Passos

  1. Crea un fitxer de característiques amb un fons.
  2. Implementa Before i After hooks en el projecte.
  3. Executa els escenaris i observa l'efecte dels fons i hooks.

Solució

  1. Fitxer de característiques:

    Feature: Gestió de productes
    
    Background:
      Given l'usuari està autenticat com a administrador
    
    Scenario: Afegir un nou producte
      When l'usuari afegeix un producte amb nom "Ordinador"
      Then el producte hauria d'aparèixer a la llista de productes
    
  2. Implementació de Hooks:

    import io.cucumber.java.Before;
    import io.cucumber.java.After;
    
    public class ProductHooks {
    
        @Before
        public void setUp() {
            System.out.println("Configurant l'entorn de prova per a productes");
        }
    
        @After
        public void tearDown() {
            System.out.println("Netejant l'entorn de prova per a productes");
        }
    }
    

Conclusió

Els fons i hooks són eines poderoses en Cucumber que ajuden a mantenir els escenaris nets i organitzats. Els fons permeten establir un context comú, mentre que els hooks gestionen la configuració i neteja de l'entorn de prova. Aquests conceptes són fonamentals per escriure proves eficients i mantenibles. En el següent tema, explorarem els esquemes d'escenari i exemples per millorar encara més la flexibilitat dels nostres escenaris.

© Copyright 2024. Tots els drets reservats