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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *