Agurk (software)
Definitioner af trin Rediger
Trin i agurk “s .feature
filer kan betragtes som en metodeopfordring. Før agurk kan udføre et trin, det skal fortælles, via en trindefinition, hvordan dette trin skal udføres.
Definitioner er skrevet i Ruby og gemmes konventionelt under features/step_definitions/*_steps.rb
. Definitioner starter med de samme nøgleord som deres påkaldelse (inklusive Gherkins fulde sprogstøtte). Hver definition tager to argumenter
- Enten et regulært udtryk eller en streng med $ variabler
- En blok, der indeholder rubinkode, der skal udføres
Eksempel ved hjælp af regulære udtryk
Given /(.*) has a valid Credit or Debit card/ do |name| # Ruby codeend
Eksempel på strenge og $ variabler. Bemærk, at strengen ved kørsel konverteres til et regulært udtryk, og enhver $ variabel konverteres til at matche (.*)
.
Given "$name has a valid Credit or Debit card" do |name| # Ruby codeend
HooksEdit
Hooks er agurks måde at tillade opsætning, der skal udføres inden test køres og nedrivning køres bagefter. De defineres som eksekverbare Ruby-blokke , svarende til JUnit-metoder, der er markeret med @Before, @After
-angivelser. Konventionelt placeres de under support/
og anvendes globalt. Tre grundlæggende typer kroge
-
Before
– Kører før et scenarie -
After
– Kører efter en scenario -
Around
– Antager kontrol og løber rundt i et scenario
Yderligere kroge inkluderer
-
BeforeStep
-
AfterStep
-
AfterConfiguration
– Kører efter agurkekonfiguration og sendes ind konfigurationens holdning
Before, After, and Around
kroge kan valgfrit tage en liste over tagsfiltreringsscenarier, som de gælder for. En liste med tags i samme streng behandles som OR
, mens individuelle argumenter behandles som AND
; tags kan valgfrit ignoreres ved at gå foran ~
.
Eksempel på en tagget før hook
Before("@ATM") do |scenario| # Ruby codeend
Kroge bruges ofte til at opretholde databasetilstand, typisk ved at rydde op inden kørsel af et scenario. Det er også muligt at starte og rulle en transaktion tilbage ved hjælp af Before
og After
kroge, og mange agurkeudvidelser giver en @txn
-tag til et sådant formål.
Integrationer og implementeringerEdit
Ikke-ruby-implementeringer af agurk findes til populære sprog, herunder Java, JavaScript og Python. Der findes også support til integrationstestrammer. En komplet liste over implementeringer kan findes på Agurk. Agurk har integrerede testværktøjer, der fungerer godt sammen med mange kontinuerlige integrationskonfigurationer. Der er agurk-plugins til populære CI-værktøjer som Jenkins og TeamCity og også til IDEer som Eclipse og RubyMine.
Nedenfor er et eksempel på en trindefinition skrevet til Java med Cucumber-JVM.
@Given("(.*) has a valid Credit or Debit card")public void has_card(String name) { // Java code}
Formatter-plugins Rediger
Agurk bruger Formatter-plugins til at levere output. Flere almindelige formater leveres som standard, herunder
- JSON
- HTML
- JUnit
Tilgængelige formater er ikke standardiseret på tværs af forskellige agurkimplementeringer, så tilbud kan variere. Agurk understøtter også rige outputformater som billeder og videoer.
Browser automationEdit
Agurk leverer ikke indbygget browser automatisering. Det fungerer dog godt sammen med eksisterende programmer som Selenium og WATiR-WebDriver. Det understøtter kørsel af tests med transaktioner ved at udnytte andre programmer såsom ActiveRecord.
Agurk kommandolinje Rediger
Agurk leveres med en indbygget kommandolinjegrænseflade, der dækker en omfattende liste over instruktioner . Som de fleste kommandolinjeværktøjer giver agurk --help
mulighed, der giver en oversigt over argumenter, som kommandoen accepterer.
Agurk kommandolinje kan bruges til hurtigt at køre definerede tests . Det understøtter også kørsel af et undersæt af scenarier ved at filtrere tags.
$ cucumber --tags @tag-name
Ovenstående kommando hjælper kun med at udføre de scenarier, der har angivet @tag-name
. Argumenter kan leveres som en logisk OR
eller AND
-funktion af tags. Bortset fra tags kan scenarier filtreres på scenarie navne.
$ cucumber --name logout
Ovenstående kommando kører kun de scenarier, der indeholder ordet “logout”.
Det er også nyttigt at kunne vide, hvad der gik galt, når en test mislykkedes. Agurk gør det nemt at fange bugs i koden med indstillingen --backtrace
.
Agurk kan også konfigureres til at ignorere visse scenarier, der ikke er afsluttet, ved at markere dem med mærket Work In Progress @wip
. Når agurk overføres til argumentet --wip
, ignorerer agurk scenarier med @wip
-tagget.