En aquest tema, explorarem com Cucumber pot ser utilitzat amb diversos llenguatges de programació. Cucumber és una eina versàtil que permet als equips de desenvolupament implementar el BDD (Behavior-Driven Development) en una àmplia gamma de llenguatges, facilitant la col·laboració entre desenvolupadors, testers i altres parts interessades.
Conceptes clau
- Cucumber JVM: Una implementació de Cucumber per a la màquina virtual de Java, que permet utilitzar Cucumber amb llenguatges com Java, Groovy, Scala, etc.
 - Cucumber Ruby: La implementació original de Cucumber, que funciona amb Ruby.
 - Cucumber.js: Una implementació de Cucumber per a JavaScript, que permet utilitzar-lo en aplicacions Node.js i del costat del client.
 - Cucumber per a altres llenguatges: Implementacions per a altres llenguatges com Python (Behave), .NET (SpecFlow), etc.
 
Configuració de Cucumber amb diferents llenguatges
- Cucumber JVM (Java)
 
Requisits previs
- Instal·lar Java Development Kit (JDK).
 - Configurar un projecte Maven o Gradle.
 
Exemple de configuració amb Maven
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>7.0.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>7.0.0</version>
    <scope>test</scope>
</dependency>Exemple de codi
import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;
public class StepDefinitions {
    @Given("el sistema està preparat")
    public void el_sistema_està_preparat() {
        // Implementació del codi
    }
    @When("l'usuari inicia sessió")
    public void l_usuari_inicia_sessió() {
        // Implementació del codi
    }
    @Then("l'usuari veu la pàgina d'inici")
    public void l_usuari_veu_la_pàgina_d_inici() {
        // Implementació del codi
    }
}
- Cucumber Ruby
 
Requisits previs
- Instal·lar Ruby i el gestor de paquets Bundler.
 
Exemple de configuració
Exemple de codi
Given('el sistema està preparat') do
  # Implementació del codi
end
When('l\'usuari inicia sessió') do
  # Implementació del codi
end
Then('l\'usuari veu la pàgina d\'inici') do
  # Implementació del codi
end
- Cucumber.js (JavaScript)
 
Requisits previs
- Instal·lar Node.js i npm.
 
Exemple de configuració
Exemple de codi
const { Given, When, Then } = require('@cucumber/cucumber');
Given('el sistema està preparat', function () {
  // Implementació del codi
});
When('l\'usuari inicia sessió', function () {
  // Implementació del codi
});
Then('l\'usuari veu la pàgina d\'inici', function () {
  // Implementació del codi
});Exercici pràctic
Objectiu: Configurar un projecte Cucumber en el llenguatge de la teva elecció i escriure un escenari senzill.
Passos
- Tria un llenguatge de programació (Java, Ruby, o JavaScript).
 - Configura un projecte Cucumber seguint les instruccions anteriors.
 - Escriu un escenari senzill utilitzant Gherkin.
 - Implementa les definicions de passos corresponents.
 - Executa les proves i verifica que passin correctament.
 
Solució
La solució variarà segons el llenguatge triat, però hauria de seguir els exemples proporcionats en la secció de configuració i codi.
Conclusió
Cucumber és una eina poderosa que pot ser integrada amb diversos llenguatges de programació, permetent als equips de desenvolupament adoptar el BDD de manera flexible i eficient. En aquest tema, hem après a configurar Cucumber amb Java, Ruby i JavaScript, i hem escrit exemples de codi per a cada llenguatge. Amb aquesta base, estàs preparat per explorar més funcions avançades de Cucumber en el teu llenguatge preferit.
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
 
