Okurka (software)
Definice krokuUpravit
Kroky v Gherkinových .feature
lze považovat za vyvolání metody. Před okurkou může provést krok, musí být prostřednictvím definice kroku řečeno, jak by měl být tento krok proveden.
Definice jsou psány v Ruby a běžně ukládány pod features/step_definitions/*_steps.rb
. Definice začínají stejnými klíčovými slovy jako jejich vyvolání (včetně úplné jazykové podpory Gherkin). Každá definice má dva argumenty
- Buď regulární výraz nebo řetězec s proměnnými $
- Blok obsahující rubínový kód k provedení
Příklad použití regulárních výrazů
Given /(.*) has a valid Credit or Debit card/ do |name| # Ruby codeend
Příklad použití řetězců a $ proměnných. Upozorňujeme, že za běhu je řetězec převeden na regulární výraz a libovolná proměnná $ je převedena tak, aby odpovídala (.*)
.
Given "$name has a valid Credit or Debit card" do |name| # Ruby codeend
HooksEdit
Háčky jsou způsob okurky, který umožňuje provést nastavení před spuštěním testů a následným spuštěním teardown. Jsou definovány jako spustitelné rubínové bloky , podobné metodám JUnit označeným @Before, @After
anotacemi. Obvykle jsou umístěny pod support/
a používají se globálně. Existují tři základní typy háčků
-
Before
– Spustí se před scénářem -
After
– Spustí se po scénář -
Around
– Převezme kontrolu a pobíhá kolem scénáře
Mezi další háčky patří
-
BeforeStep
-
AfterStep
-
AfterConfiguration
– Spustí se po konfiguraci okurky a předá se dovnitř stav konfigurace
Before, After, and Around
háčky volitelně vezmou seznam scénářů filtrování značek, na které se vztahují. Seznam značek ve stejném řetězci je považován za OR
, zatímco jednotlivé argumenty jsou považovány za AND
; značky lze volitelně negovat tak, že před nimi bude ~
.
Příklad označeného tagu před háčkem
Before("@ATM") do |scenario| # Ruby codeend
Háčky se často používají k udržování stavu databáze, obvykle vyčištěním před spuštěním scénáře. Je také možné zahájit a vrátit transakci pomocí háčků Before
a After
a mnoho rozšíření Okurka poskytuje @txn
značka pro tento účel.
Integrace a implementaceEdit
Non Ruby implementace Cucumber existují pro populární jazyky včetně Java, JavaScript a Python. Existuje také podpora pro integrační testovací rámce. Kompletní seznam implementací najdete na Cucumber. Cucumber má integrované testovací nástroje, které fungují dobře s mnoha konfiguracemi kontinuální integrace. Existují pluginy okurek pro oblíbené nástroje CI, jako jsou Jenkins a TeamCity, a také pro IDE, jako je Eclipse a RubyMine.
Níže je uveden příklad definice kroku napsané pro Javu s Cucumber-JVM. >
@Given("(.*) has a valid Credit or Debit card")public void has_card(String name) { // Java code}
Doplňky formátovacího moduluEdit
Okurka používá k zajištění výstupu doplňky formátovacího modulu. Ve výchozím nastavení je k dispozici několik běžných formátů, včetně
- JSON
- HTML
- JUnit
Dostupné formáty jsou není standardizováno napříč různými implementacemi okurky, takže nabídky se mohou lišit. Okurka také podporuje bohaté výstupní formáty, jako jsou obrázky a videa.
Automatizace prohlížeče Upravit
Okurka neposkytuje integrovanou automatizaci prohlížeče. Funguje však dobře se stávajícími programy, jako je Selenium a WATiR-WebDriver. Podporuje spouštění testů s transakcemi pomocí dalších programů, jako je ActiveRecord.
Příkazový řádek CucumberEdit
Cucumber je dodáván s vestavěným rozhraním příkazového řádku, které zahrnuje komplexní seznam pokynů . Jako většina nástrojů příkazového řádku poskytuje okurka možnost --help
, která poskytuje souhrn argumentů, které příkaz přijímá.
K rychlému spuštění definovaných testů lze použít příkazový řádek okurky . Podporuje také spuštění podmnožiny scénářů filtrováním značek.
$ cucumber --tags @tag-name
Výše uvedený příkaz pomáhá při provádění pouze těch scénářů, které mají uvedeno @tag-name
. Argumenty lze poskytnout jako logickou OR
nebo AND
operaci značek. Kromě značek lze scénáře filtrovat podle názvů scénářů.
$ cucumber --name logout
Výše uvedený příkaz spustí pouze ty scénáře, které obsahují slovo „odhlášení“.
Je také užitečné vědět, co se pokazilo, když test selhal. Okurka usnadňuje chytání chyb v kódu pomocí možnosti --backtrace
.
Okurku lze také nakonfigurovat tak, aby ignorovala určité scénáře, které nebyly dokončeny, a to tak, že je označíte značkou Work In Progress @wip
. Když je okurce předán argument --wip
, okurka ignoruje scénáře se značkou @wip
.