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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *