Cucumber (software)


Stapdefinities Bewerken

Stappen in Gherkin “s .feature -bestanden kunnen worden beschouwd als een methode-aanroep. Vóór Cucumber een stap kan uitvoeren moet via een stapdefinitie worden verteld hoe die stap moet worden uitgevoerd.

Definities zijn geschreven in Ruby en conventioneel gearchiveerd onder features/step_definitions/*_steps.rb. Definities beginnen met dezelfde sleutelwoorden als hun aanroep (inclusief Gherkins volledige taalondersteuning). Elke definitie heeft twee argumenten

  • Ofwel een reguliere expressie of een string met $ variabelen
  • Een blok met ruby-code om uit te voeren

Voorbeeld gebruikmakend van reguliere expressies

Given /(.*) has a valid Credit or Debit card/ do |name| # Ruby codeend

Voorbeeld met strings en $ variabelen. Merk op dat tijdens runtime de string wordt geconverteerd naar een reguliere expressie, en elke $ variabele wordt geconverteerd om overeen te komen met (.*).

Given "$name has a valid Credit or Debit card" do |name| # Ruby codeend

HooksEdit

Hooks zijn de manier van Cucumber om setup uit te voeren voordat de tests worden uitgevoerd en demontage om daarna te worden uitgevoerd. Ze worden gedefinieerd als uitvoerbare Ruby-blokken , vergelijkbaar met JUnit-methoden gemarkeerd met @Before, @After annotaties. Conventioneel worden ze onder support/ geplaatst en worden ze wereldwijd toegepast. Er zijn drie basistypen van hooks

  • Before – Wordt uitgevoerd vóór een scenario
  • After – Wordt uitgevoerd na een scenario
  • Around – Neemt de controle over en draait rond een scenario

Extra hooks zijn onder meer

  • BeforeStep
  • AfterStep
  • AfterConfiguration – Draait na Cucumber-configuratie en wordt doorgegeven in stand van de configuratie

Before, After, and Around hooks nemen optioneel een lijst met filterscenarios voor tags waarop ze van toepassing zijn. Een lijst met tags in dezelfde string wordt behandeld als OR, terwijl individuele argumenten worden behandeld als AND; tags kunnen optioneel worden genegeerd door ze vooraf te laten gaan door ~.

Voorbeeld van een tag die is getagd vóór hook

Before("@ATM") do |scenario| # Ruby codeend

Hooks worden vaak gebruikt om de databasestatus te behouden, meestal door op te schonen voordat een scenario wordt uitgevoerd. Het is ook mogelijk om een transactie te starten en terug te draaien met Before en After hooks, en veel Cucumber-extensies bieden een @txn tag voor een dergelijk doel.

Integraties en implementaties Bewerken

Er bestaan niet-Ruby-implementaties van Cucumber voor populaire talen, waaronder Java, JavaScript en Python. Er is ook ondersteuning voor frameworks voor integratietests. Een volledige lijst met implementaties is te vinden op Cucumber. Cucumber heeft geïntegreerde testtools die goed werken met veel Continuous Integration-configuraties. Er zijn komkommer-plug-ins voor populaire CI-tools zoals Jenkins en TeamCity en ook voor IDEs zoals Eclipse en RubyMine.

Hieronder staat een voorbeeld van een stapdefinitie geschreven voor Java met Cucumber-JVM.

@Given("(.*) has a valid Credit or Debit card")public void has_card(String name) { // Java code}

Formatter pluginsEdit

Cucumber gebruikt Formatter Plugins om output te leveren. Er worden standaard verschillende veelgebruikte formaten geleverd, waaronder

  • JSON
  • HTML
  • JUnit

Beschikbare formaten zijn niet gestandaardiseerd over verschillende Cucumber-implementaties, dus het aanbod kan verschillen. Cucumber ondersteunt ook rijke uitvoerformaten zoals afbeeldingen en videos.

Browserautomatisering Bewerken

Cucumber biedt geen ingebouwde browserautomatisering. Het werkt echter goed met bestaande programmas zoals Selenium en WATiR-WebDriver. Het ondersteunt het uitvoeren van tests met transacties door gebruik te maken van andere programmas zoals ActiveRecord.

Cucumber command-lineEdit

Cucumber wordt geleverd met een ingebouwde command line-interface die een uitgebreide lijst met instructies bevat . Zoals de meeste opdrachtregelprogrammas, biedt cucumber de optie --help die een samenvatting geeft van de argumenten die de opdracht accepteert.

De opdrachtregel van Cucumber kan worden gebruikt om snel gedefinieerde tests uit te voeren . Het ondersteunt ook het uitvoeren van een subset van scenarios door tags te filteren.

$ cucumber --tags @tag-name

De bovenstaande opdracht helpt bij het uitvoeren van alleen die scenarios die de gespecificeerd @tag-name. Argumenten kunnen worden opgegeven als een logische OR of AND bewerking van tags. Afgezien van tags kunnen scenarios worden gefilterd op scenarionamen.

$ cucumber --name logout

Het bovenstaande commando zal alleen die scenarios uitvoeren die het woord bevatten “logout”.

Het is ook handig om te weten wat er mis is gegaan als een test mislukt. Cucumber maakt het gemakkelijk om bugs in de code op te sporen met de optie --backtrace.

Komkommer kan ook worden geconfigureerd om bepaalde scenarios te negeren die niet zijn voltooid door ze te markeren met de Work In Progress-tag @wip. Als Cucumber het --wip -argument heeft doorgegeven, negeert Cucumber scenarios met de @wip -tag.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *