Sök…


Anmärkningar

Om gurka

Gurka är ett verktyg som kör körbara specifikationer för programvara. Specifikationer, kallade "funktioner", är skrivna på ett strukturerat naturligt språk. Cucumber kör en funktion genom att kartlägga vart och ett av sina steg till en "stegdefinition" skriven på det programmeringsspråk som stöds av implementeringen av Cucumber. Gurka implementeras på många programmeringsspråk inklusive Ruby (originalet), Java och Javascript . Det översätts också till många mänskliga språk.

Gurka skrevs för att stödja den smidiga metodik som kallas Bete-Driven Development (BDD). I BDD börjar man utveckla sig utanför genom att skriva godkännandestester som beskriver programvarans funktionalitet ur användarens synvinkel (snarare än från en programmerares synvinkel, t.ex. i enhetstester). Gurkafunktioner fungerar som dessa godkännande test.

I allmänhet är Cucumber-funktioner en dokumentläsbar dokumentation som också är en körbar testsvit, vilket innebär att dokumentation och test alltid är överens. Gurka är användbar för att kommunicera med icke-programmerare intressenter om dokumentation och tester. Det gör det också möjligt för programmerare att skriva tester på en konceptuell nivå utan irrelevanta problem med programmeringsspråket.

Gurka används oftast för att specificera och testa webbapplikationer med hjälp av en webbläsardrivrutin som Selenium eller PhantomJS. Det kan emellertid användas med all programvara som kan köras och vars status eller resultat kan bestämmas utifrån programmeringsspråket som en gurkaimplementering stöder.

Övrig dokumentation

Officiell dokumentation finns på https://cucumber.io/docs . Dokumentation genererad från agurkfunktionerna som beskriver implementering av gurka är på

https://relishapp.com/explore innehåller några andra Cucumber-relaterade verktyg och exempel, men inte, tyvärr, Cucumber-JVM.

Det här ämnet

Detta ämne bör bara ge några få exempel som introducerar läsaren för gurka-koncept. Andra avsnitt ger fullständiga exempel på installation, kommandorad- och IDE-användning, funktioner, stegdefinitioner, etc.

En gurkfunktion

Gurkan använder Gherkin-syntax för att beskriva programvarans beteenden på strukturerat naturligt språk.

Eftersom en sådan gurka inte är ett testram (ett vanligt missförstånd), utan en systemdokumentationsram , som inte skiljer sig mycket från andra som Use Case Scenario. Det vanliga missförståndet beror på att gurka-dokumentationen kan automatiseras för att säkerställa att den återspeglar det verkliga systemets beteende .

En dokumentationssvit för gurka består av Features , var och en beskriver en funktion i din programvara, skriven i Gherkin och värd i sin egen fil. Genom att organisera dessa filer i en katalogstruktur kan du gruppera och organisera funktioner:

  • bank /
    • withdrawal.feature
    • atm.feature
    • person loan.feature
  • handel/
    • portfolio.feature
    • intraday.feature
  • inteckning/
    • evaluation.feature
    • accounting.feature

Varje Feature är en vanlig textfil som består av ett valfritt, ostrukturerat, rent informativt introduktionsavsnitt och en eller flera Scenarios , var och en representerar ett användningsvillkor eller användningsfall.

Exempel:

Feature: Documentation
As a StackOverflow user or visitor
I want to access the documentation section
    
    Scenario: search documentation on Stack Overflow
        Given I am on StackOverflow
        And I go to the Documentation section
        When I search for "cucumber"
        And I follow the link to "cucumber"
        Then I should see documentation for "cucumber"

Varje rad som börjar med given , när , och , men eller sedan kallas ett Step . Varje steg kan börja med något av dessa ord oavsett ordning, men det är vanligt att använda dem på det mest naturliga sättet.

Funktioner kan också organiseras via Tags , anteckningar som redaktören kan sätta på en Feature eller ett Scenario att ytterligare kategorisera det.

Exekverbarhet av en funktion uppnås via limkod som kan skrivas på många olika språk (Java, Ruby, Scala, C / C ++): varje Step matchas mot limkoden för att identifiera Step Definitions (vanligtvis förkortat till StepDef ) via vanliga uttryck.

Varje Step kan endast ha en associerad Step Definition .

När en Feature utförs varje komponera Scenario körs, vilket innebär att varje StepDef matcha Step s i varje Scenario får verkställas.

Ren rubininstallation

Använd kommandot för att installera gurka för användning med Ruby

gem install cucumber

Alternativt kan du lägga till följande rad till din Gemfile om du använder paketet

gem 'cucumber'

Och kör sedan bundlaren

bundle install

[Jag tror att detta hör till sitt eget ämne, Installation. Jag skapade det ämnet och kopierade detta exempel där. När det ämnet är godkänt flyttar jag det dit och tar bort kopian.]

En definition av gurka steg i Ruby

I funktioner / step_definitions / dokumentation.rb:

When /^I go to the "([^"]+)" documentation$/ do |section|
  path_part =
    case section
      when "Documentation"
        "documentation"
      else
        raise "Unknown documentation section: #{section}"
    end
  visit "/documentation/#{path_part}/topics"
end

Then /^I should see the "([^"]+) documentation"$/ do |section|
  expect(page).to have_css('h2.doctag_title a', text: section)
end

Dessa steg utövar en webbapplikation. De är ungefär så enkla som de kan vara medan de fortfarande är praktiska.

Varje steg börjar med ett Gherkin-nyckelord, som i en stegdefinitionsfil är en metod som registrerar ett steg med gurka. Den steg definierande metoden tar ett regelbundet uttryck, som matchar en linje i ett scenario, och ett block, som körs när scenariot kommer till en matchande rad. Fångstgrupper i det reguljära uttrycket överförs till blocket som blockparametrar.

When steget har ett enkelt, in-line exempel på att gå från en mänsklig läsbar referens till en sida ("Dokumentation") till en URL. Real Cucumber-sviter sätter vanligtvis denna logik på en separat metod. visit tillhandahålls av Capybara. Capybara krävs inte för att använda gurka, även om den vanligtvis används tillsammans med den. visit berättar webbläsaren kontrollerad av Capybara att besöka den angivna URL: en.

De Then steg visar hur innehållet på en sida kan testas. expect / to tillhandahålls av RSpec (igen, inte krävs av gurka men mycket vanligt med det). have_css tillhandahålls av Capybara. Förväntningen är att den givna CSS-väljaren matchar ett element på sidan som innehåller den givna texten. Observera att denna förväntan skulle misslyckas om webbläsarförfrågan hade misslyckats.

För fler exempel, se ämnet "Stegdefinition" .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow