La parametrització de passos és una tècnica essencial en el desenvolupament de proves amb Cucumber, ja que permet reutilitzar definicions de passos per a múltiples escenaris amb diferents dades d'entrada. Això no només redueix la duplicació de codi, sinó que també fa que les proves siguin més fàcils de mantenir i llegir.
Conceptes clau
- Parametrització: Consisteix a utilitzar variables dins dels passos per substituir valors literals, permetent que un sol pas pugui ser utilitzat amb diferents dades.
- Expressions regulars: S'utilitzen per identificar i extreure els valors de les variables dels passos escrits en Gherkin.
- Pas reutilitzable: Un pas que pot ser utilitzat en diversos escenaris gràcies a la parametrització.
Exemple pràctic
Escenari Gherkin
Imagina que estem provant una aplicació bancària i volem verificar el saldo d'un compte després d'un dipòsit. Podem escriure un escenari Gherkin com aquest:
Escenari: Dipositar diners en un compte Donat que el saldo inicial del compte és de 100 euros Quan diposito 50 euros al compte Aleshores el saldo final del compte hauria de ser de 150 euros
Parametrització del pas
En lloc de crear una definició de pas específica per a cada valor de saldo, podem parametritzar els passos:
Escenari: Dipositar diners en un compte Donat que el saldo inicial del compte és de <saldo_inicial> euros Quan diposito <diposit> euros al compte Aleshores el saldo final del compte hauria de ser de <saldo_final> euros Exemples: | saldo_inicial | diposit | saldo_final | | 100 | 50 | 150 | | 200 | 100 | 300 |
Definició de pas en Java
A continuació, es mostra com podríem implementar la definició de pas en Java utilitzant expressions regulars per capturar els valors parametritzats:
import io.cucumber.java.en.Given; import io.cucumber.java.en.When; import io.cucumber.java.en.Then; import static org.junit.Assert.assertEquals; public class BankAccountSteps { private int saldo; @Given("^el saldo inicial del compte és de (\\d+) euros$") public void el_saldo_inicial_del_compte_es_de(int saldoInicial) { saldo = saldoInicial; } @When("^diposito (\\d+) euros al compte$") public void diposito_euros_al_compte(int diposit) { saldo += diposit; } @Then("^el saldo final del compte hauria de ser de (\\d+) euros$") public void el_saldo_final_del_compte_hauria_de_ser_de(int saldoFinalEsperat) { assertEquals(saldoFinalEsperat, saldo); } }
Exercici pràctic
Exercici
Crea un escenari Gherkin per a una funcionalitat de retirada de diners d'un compte bancari. Parametritza els passos per permetre diferents valors de saldo inicial, retirada i saldo final esperat.
Solució
Escenari: Retirar diners d'un compte Donat que el saldo inicial del compte és de <saldo_inicial> euros Quan retiro <retirada> euros del compte Aleshores el saldo final del compte hauria de ser de <saldo_final> euros Exemples: | saldo_inicial | retirada | saldo_final | | 150 | 50 | 100 | | 300 | 100 | 200 |
Definició de pas en Java
@When("^retiro (\\d+) euros del compte$") public void retiro_euros_del_compte(int retirada) { saldo -= retirada; }
Conclusió
La parametrització de passos és una tècnica poderosa que permet escriure proves més flexibles i mantenibles. Mitjançant l'ús d'expressions regulars, podem capturar i utilitzar valors variables dins dels nostres passos, facilitant la reutilització i la claredat dels escenaris de prova. Practicar aquesta tècnica ajudarà a millorar l'eficiència i l'eficàcia de les proves BDD.
BDD amb Cucumber i Gherkin
Mòdul 1: Introducció al BDD
Mòdul 2: Començar amb Cucumber
- Configuració de l'entorn
- Creació del teu primer projecte Cucumber
- Comprensió dels fitxers de característiques
Mòdul 3: Escriure escenaris Gherkin
Mòdul 4: Definicions de passos
Mòdul 5: Tècniques avançades de Gherkin
Mòdul 6: Integració de Cucumber amb el desenvolupament
- Integració amb la integració contínua
- Utilitzant Cucumber amb diferents llenguatges
- Millors pràctiques per al BDD en equips
Mòdul 7: Funcions avançades de Cucumber
Mòdul 8: Aplicacions reals del BDD
- Estudi de cas: BDD en una aplicació web
- Estudi de cas: BDD en una arquitectura de microserveis
- Reptes i solucions en el BDD