Agurk (programvare)
Trinndefinisjoner Rediger
Trinn i agurk «s .feature
filer kan betraktes som en metodeinnkallelse. Før agurk kan utføre et trinn det må fortelles, via en trinndefinisjon, hvordan det trinnet skal utføres.
Definisjoner er skrevet i Ruby og konvensjonelt arkivert under features/step_definitions/*_steps.rb
. Definisjoner starter med de samme nøkkelordene som påkallingen (inkludert Gherkins full språkstøtte). Hver definisjon tar to argumenter
- Enten et vanlig uttrykk eller en streng med $ -variabler
- En blokk som inneholder rubinkode å utføre
Eksempel ved å bruke vanlige uttrykk
Given /(.*) has a valid Credit or Debit card/ do |name| # Ruby codeend
Eksempel på strenger og $ -variabler. Merk at strengen konverteres til et vanlig uttrykk ved kjøretid, og enhver $ -variabel konverteres til å matche (.*)
.
Given "$name has a valid Credit or Debit card" do |name| # Ruby codeend
HooksEdit
Hooks er agurkens måte å tillate at oppsett kan utføres før tester kjøres og nedrivning kjøres etterpå. De defineres som kjørbare Ruby-blokker , lik JUnit-metoder merket med @Before, @After
-notater. Vanligvis plasseres de under support/
, og brukes globalt. Tre grunnleggende typer kroker eksisterer
-
Before
– Kjører før et scenario -
After
– Kjører etter en scenario -
Around
– Forutsetter kontroll og løper rundt et scenario
Ekstra kroker inkluderer
-
BeforeStep
-
AfterStep
-
AfterConfiguration
– Kjører etter agurkekonfigurasjon og sendes inn stilling av konfigurasjonen
Before, After, and Around
kroker kan eventuelt ta en liste over koder som filtrerer scenarier som de gjelder for. En liste over koder i samme streng behandles som OR
, mens individuelle argumenter behandles som AND
; koder kan valgfritt negeres ved å gå foran ~
.
Eksempel på en merket før kroken
Before("@ATM") do |scenario| # Ruby codeend
Kroker brukes ofte til å opprettholde databasetilstanden, vanligvis ved å rydde opp før du kjører et scenario. Det er også mulig å starte og rulle tilbake en transaksjon ved hjelp av Before
og After
kroker, og mange agurkutvidelser gir en @txn
-kode for et slikt formål.
Integrasjoner og implementeringerRediger
Non Ruby-implementeringer av Agurk eksisterer for populære språk, inkludert Java, JavaScript og Python. Det finnes også støtte for integrasjonstestingsrammer. En komplett liste over implementeringer finner du på Agurk. Agurk har integrerte testverktøy som fungerer bra med mange kontinuerlige integrasjonskonfigurasjoner. Det er agurkplugins for populære CI-verktøy som Jenkins og TeamCity, og også for IDEer som Eclipse og RubyMine.
Nedenfor er et eksempel på en trinndefinisjon skrevet for Java med Cucumber-JVM.
@Given("(.*) has a valid Credit or Debit card")public void has_card(String name) { // Java code}
Formatter pluginsEdit
Agurk bruker Formatter Plugins for å gi utdata. Flere vanlige formater er gitt som standard, inkludert
- JSON
- HTML
- JUnit
Tilgjengelige formater er ikke standardisert på tvers av forskjellige agurkimplementeringer, så tilbud kan variere. Agurk støtter også rike utdataformater som bilder og videoer.
Nettleserautomatisering Rediger
Agurk gir ikke innebygd nettleserautomatisering. Imidlertid fungerer det bra med eksisterende programmer som Selenium og WATiR-WebDriver. Den støtter kjøring av tester med transaksjoner ved å utnytte andre programmer som ActiveRecord.
Agurk kommandolinjeEdit
Agurk leveres med et innebygd kommandolinjegrensesnitt som dekker en omfattende liste over instruksjoner . Som de fleste kommandolinjeverktøy gir agurk --help
alternativet som gir et sammendrag av argumenter kommandoen godtar.
Agurk kommandolinje kan brukes til å kjøre definerte tester raskt . Den støtter også å kjøre et delsett av scenarier ved å filtrere koder.
$ cucumber --tags @tag-name
Kommandoen ovenfor hjelper til å utføre bare de scenariene som har spesifisert @tag-name
. Argumenter kan leveres som en logisk OR
eller AND
-drift av koder. Bortsett fra koder, kan scenarier filtreres på scenenavn.
$ cucumber --name logout
Kommandoen ovenfor kjører bare de scenariene som inneholder ordet «logout».
Det er også nyttig å kunne vite hva som gikk galt når en test mislyktes. Agurk gjør det enkelt å fange bugs i koden med alternativet --backtrace
.
Agurk kan også konfigureres til å ignorere visse scenarier som ikke er fullført ved å merke dem med Work In Progress-koden @wip
. Når agurk overføres til argumentet --wip
, ignorerer agurk scenarier med @wip
-taggen.