Suche…


Bemerkungen

Über Gurke

Gurke ist ein Werkzeug, das ausführbare Spezifikationen von Software ausführt. Spezifikationen, "Features" genannt, sind in strukturierter natürlicher Sprache verfasst. Cucumber führt ein Feature aus, indem jeder Schritt einer "Schrittdefinition" zugeordnet wird, die in der Programmiersprache geschrieben ist, die von dieser Implementierung von Cucumber unterstützt wird. Gurke ist in vielen Programmiersprachen implementiert, darunter Ruby (das Original), Java und Javascript . Es wird auch in viele menschliche Sprachen übersetzt.

Gurke wurde geschrieben, um die agile Methodik namens Behavior-Driven Development (BDD) zu unterstützen. Bei BDD beginnt man mit der Entwicklung von außerhalb mit dem Schreiben von Abnahmetests, die die Funktionalität der Software aus Sicht des Benutzers beschreiben (und nicht aus Sicht eines Programmierers wie bei Unit-Tests). Gurkenmerkmale dienen als Abnahmetests.

Im Allgemeinen handelt es sich bei Cucumber-Funktionen um eine von Menschen lesbare Dokumentation, die auch eine ausführbare Testsuite ist, sodass Dokumentation und Tests immer übereinstimmen. Gurke ist hilfreich bei der Kommunikation mit Nicht-Programmierer-Stakeholdern über Dokumentation und Tests. Es ermöglicht Programmierern auch, Tests auf konzeptioneller Ebene zu schreiben, ohne irrelevante Probleme in der Programmiersprache zu verursachen.

Gurke wird am häufigsten verwendet, um Webanwendungen mithilfe eines Browsertreibers wie Selenium oder PhantomJS anzugeben und zu testen. Es kann jedoch mit jeder Software verwendet werden, die ausgeführt werden kann und deren Status oder Ergebnisse aus der Programmiersprache bestimmt werden können, die eine Cucumber-Implementierung unterstützt.

Andere Dokumentation

Offizielle Dokumentation finden Sie unter https://cucumber.io/docs . Die Dokumentation, die mit den Gurkenfunktionen erstellt wurde, die die Gurkenimplementierungen beschreiben, ist unter

https://relishapp.com/explore enthält einige andere Tools und Beispiele für Cucumber, allerdings nicht Cucumber-JVM.

Dieses Thema

Dieses Thema sollte nur einige Beispiele geben, die den Leser in die Gurkenkonzepte einführen. Andere Abschnitte enthalten vollständige Beispiele für die Installation, die Verwendung der Befehlszeile und der IDE, die Funktionen, Schrittdefinitionen usw.

Eine Gurkenfunktion

Gurke verwendet die Gherkin-Syntax , um das Verhalten Ihrer Software in strukturierter natürlicher Sprache zu beschreiben.

Daher ist Gurke kein Testframework (ein häufiges Missverständnis), sondern ein Systemdokumentationsframework , das sich nicht sehr von anderen wie dem Use Case Scenario unterscheidet. Das häufige Missverständnis ist darauf zurückzuführen, dass die Gurkendokumentation automatisiert werden kann, um sicherzustellen, dass sie das tatsächliche Systemverhalten widerspiegelt .

Eine Cucumber-Dokumentations-Suite besteht aus Features , von denen jede eine Funktion Ihrer Software beschreibt, die in Gherkin geschrieben und in einer eigenen Datei gehostet ist. Durch das Organisieren dieser Dateien in einer Verzeichnisstruktur können Sie Funktionen gruppieren und organisieren :

  • Bankwesen /
    • Rückzug
    • atm.feature
    • persönliches Darlehen
  • Handel/
    • portfolio.feature
    • Intraday-Feature
  • Hypothek/
    • Bewertung.Feature
    • buchhaltung.merkmal

Jedes Feature ist eine Nur-Text-Datei, die aus einem optionalen, unstrukturierten, rein informativen Einführungsabschnitt und einem oder mehreren Scenarios , die jeweils eine Verwendungsbedingung oder einen Anwendungsfall darstellen.

Beispiel:

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"

Jede Zeile, die mit Given , When , And , But oder Then beginnt, wird als Step . Jeder Schritt kann mit jedem dieser Wörter unabhängig von der Reihenfolge beginnen, es ist jedoch üblich, sie auf möglichst natürliche Weise zu verwenden.

Features können auch über Tags organisiert werden, Anmerkungen, die der Editor für ein Feature Scenario kann, oder ein Scenario um es weiter zu kategorisieren.

Die Ausführbarkeit eines Features wird durch Glue- Code erreicht, der in vielen verschiedenen Sprachen (Java, Ruby, Scala, C / C ++) geschrieben werden kann: Jeder Step wird mit dem Glue-Code abgeglichen, um über Step Definitions (üblicherweise als StepDef abgekürzt) zu identifizieren Reguläre Ausdrücke.

Jedem Step kann nur eine Step Definition .

Wenn ein Feature ausgeführt wird, wird jedes zusammenfassende Scenario ausgeführt. Das bedeutet, dass jedes StepDef, das mit den Step in jedem Scenario übereinstimmt, ausgeführt wird.

Reine Rubin-Installation

Um Gurke zur Verwendung mit Ruby zu installieren, verwenden Sie einfach den Befehl

gem install cucumber

Wenn Sie Bundler verwenden, können Sie alternativ die folgende Zeile zu Ihrem Gemfile hinzufügen

gem 'cucumber'

Und dann Bundler ausführen

bundle install

[Ich denke, das gehört zu seinem eigenen Thema, Installation. Ich habe dieses Thema erstellt und dieses Beispiel dort kopiert. Wenn das Thema genehmigt ist, werde ich es dort verschieben und die Kopie löschen.]

Eine Gurkenschrittdefinition in Ruby

In features / step_definitions / documentation.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

Diese Schritte üben eine Webanwendung aus. Sie sind so einfach wie sie sein können, während sie praktisch sind.

Jeder Schritt beginnt mit einem Gherkin-Schlüsselwort, das in einer Schrittdefinitionsdatei eine Methode ist, die einen Schritt bei Cucumber registriert. Die schrittbestimmende Methode benötigt einen regulären Ausdruck, der einer Zeile in einem Szenario entspricht, und einen Block, der ausgeführt wird, wenn das Szenario eine übereinstimmende Zeile erreicht. Erfassungsgruppen im regulären Ausdruck werden als Blockparameter an den Block übergeben.

Der Schritt " When enthält ein einfaches Inline-Beispiel für den Übergang von einer für Menschen lesbaren Referenz auf eine Seite ("Dokumentation") zu einer URL. Echte Gurkensuiten verwenden diese Logik normalerweise in einer separaten Methode. Die visit wird von Capybara bereitgestellt. Capybara ist nicht erforderlich, um Gurke zu verwenden, obwohl es häufig verwendet wird. visit teilt dem von Capybara kontrollierten Browser mit, die angegebene URL aufzurufen.

Der Then Schritt zeigt, wie der Inhalt einer Seite getestet werden kann. expect / to durch RSpec bereitgestellt (auch hier nicht von Gurken erforderlich , aber sehr häufig verwendet , um mit ihm). have_css wird von Capybara zur Verfügung gestellt. Die Erwartung ist, dass der angegebene CSS-Selektor einem Element auf der Seite entspricht, das den angegebenen Text enthält. Beachten Sie, dass diese Erwartung fehlschlagen würde, wenn die Browseranforderung fehlgeschlagen war.

Weitere Beispiele finden Sie im Thema "Schrittdefinition" .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow