Ogórek (oprogramowanie)
Definicje krokówEdytuj
 Kroki w plikach Gherkin „s .feature można uznać za wywołanie metody. Przed Cucumber może wykonać krok, musi zostać poinformowany, poprzez definicję kroku, jak ten krok powinien zostać wykonany. 
 Definicje są zapisywane w Rubim i tradycyjnie umieszczane w features/step_definitions/*_steps.rb. Definicje rozpoczynają się od tych samych słów kluczowych, co ich wywołanie (w tym pełna obsługa języków Gherkina). Każda definicja przyjmuje dwa argumenty 
- Wyrażenie regularne lub ciąg znaków ze zmiennymi $
 - Blok zawierający kod ruby do wykonania
 
Przykład używając wyrażeń regularnych
Given /(.*) has a valid Credit or Debit card/ do |name| # Ruby codeend
 Przykład użycia łańcuchów i zmiennych $. Zwróć uwagę, że w czasie wykonywania ciąg jest konwertowany na wyrażenie regularne, a każda zmienna $ jest konwertowana tak, aby pasowała do (.*). 
Given "$name has a valid Credit or Debit card" do |name| # Ruby codeend
HooksEdit
 Hooki to sposób, w jaki Cucumber pozwala na wykonanie konfiguracji przed uruchomieniem testów i późniejszym ich porzuceniem. Są one zdefiniowane jako wykonywalne bloki Rubiego , podobnie jak metody JUnit oznaczone adnotacjami @Before, @After. Konwencjonalnie są umieszczane pod support/ i są stosowane globalnie. Istnieją trzy podstawowe typy zaczepów 
-  
Before– uruchamiane przed scenariuszem -  
After– uruchamiane po scenariusz -  
Around– przejmuje kontrolę i omija scenariusz 
Dodatkowe punkty zaczepienia obejmują
-  
BeforeStep -  
AfterStep -  
AfterConfiguration– Uruchamia się po konfiguracji Cucumber i jest przekazywany do stan konfiguracji 
 Before, After, and Around haki opcjonalnie przyjmują listę scenariuszy filtrowania tagów, do których się odnoszą. Lista tagów w tym samym ciągu jest traktowana jako OR, podczas gdy poszczególne argumenty są traktowane jako AND; tagi można opcjonalnie zanegować, poprzedzając je ~. 
Przykład otagowania przed zaczepem
Before("@ATM") do |scenario| # Ruby codeend
 Hooki są często używane do utrzymywania stanu bazy danych, zazwyczaj poprzez czyszczenie przed uruchomieniem scenariusza. Możliwe jest również rozpoczęcie i wycofanie transakcji za pomocą haków Before i After, a wiele rozszerzeń Cucumber zapewnia @txn w tym celu. 
Integracje i implementacjeEdit
Istnieją inne niż Ruby implementacje Cucumber dla popularnych języków, w tym Java, JavaScript i Python. Istnieje również wsparcie dla struktur testowania integracji. Pełną listę wdrożeń można znaleźć na Cucumber. Cucumber ma zintegrowane narzędzia testowe, które dobrze współpracują z wieloma konfiguracjami ciągłej integracji. Istnieją wtyczki cucumber dla popularnych narzędzi CI, takich jak Jenkins i TeamCity, a także dla IDE, takich jak Eclipse i RubyMine.
Poniżej znajduje się przykład definicji kroku napisanej dla Javy z Cucumber-JVM.
@Given("(.*) has a valid Credit or Debit card")public void has_card(String name) { // Java code}
Wtyczki formatująceEdytuj
Cucumber wykorzystuje wtyczki formatujące do dostarczania danych wyjściowych. Domyślnie dostępnych jest kilka popularnych formatów, w tym
- JSON
 - HTML
 - JUnit
 
Dostępne formaty to nie znormalizowane w różnych implementacjach Cucumber, więc oferty mogą się różnić. Cucumber obsługuje również bogate formaty wyjściowe, takie jak obrazy i filmy.
Automatyzacja przeglądarkiEdit
Cucumber nie zapewnia wbudowanej automatyzacji przeglądarki. Jednak działa dobrze z istniejącymi programami, takimi jak Selenium i WATiR-WebDriver. Obsługuje przeprowadzanie testów z transakcjami poprzez wykorzystanie innych programów, takich jak ActiveRecord.
Cucumber Command-LineEdit
 Cucumber jest wyposażony we wbudowany interfejs wiersza poleceń, który obejmuje obszerną listę instrukcji . Podobnie jak większość narzędzi wiersza poleceń, cucumber udostępnia opcję --help, która zawiera podsumowanie argumentów akceptowanych przez polecenie. 
Wiersz poleceń Cucumber może być używany do szybkiego uruchamiania zdefiniowanych testów . Obsługuje również uruchamianie podzbioru scenariuszy poprzez filtrowanie tagów.
$ cucumber --tags @tag-name
 Powyższe polecenie pomaga w wykonywaniu tylko tych scenariuszy, które mają określony @tag-name. Argumenty można podać jako logiczną operację OR lub AND na tagach. Oprócz tagów, scenariusze można filtrować według nazw scenariuszy. 
$ cucumber --name logout
Powyższe polecenie uruchomi tylko te scenariusze, które zawierają słowo „wyloguj się”.
 Warto również wiedzieć, co poszło nie tak, gdy test się nie powiedzie. Ogórek ułatwia wyłapywanie błędów w kodzie dzięki opcji --backtrace.
 Ogórek można również skonfigurować tak, aby ignorował pewne scenariusze, które nie zostały zakończone, oznaczając je znacznikiem Praca w toku @wip. Gdy Ogórek zostanie przekazany do argumentu --wip, Ogórek ignoruje scenariusze z tagiem @wip.