Gurke (Software)

SchrittdefinitionenBearbeiten

Schritte in den .feature -Dateien von Gherkin können als Methodenaufruf betrachtet werden. Vor Cucumber kann einen Schritt ausführen, über eine Schrittdefinition muss mitgeteilt werden, wie dieser Schritt ausgeführt werden soll.

Definitionen werden in Ruby geschrieben und herkömmlicherweise unter features/step_definitions/*_steps.rb abgelegt. Definitionen beginnen mit denselben Schlüsselwörtern wie ihr Aufruf (einschließlich der vollständigen Sprachunterstützung von Gherkin). Jede Definition benötigt zwei Argumente.

  • Entweder ein regulärer Ausdruck oder eine Zeichenfolge mit $ Variablen
  • Ein Block mit Ruby-Code zum Ausführen

Beispiel Verwenden regulärer Ausdrücke

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

Beispiel mit Zeichenfolgen und $ -Variablen. Beachten Sie, dass zur Laufzeit die Zeichenfolge in einen regulären Ausdruck konvertiert wird und jede $ -Variable so konvertiert wird, dass sie mit (.*) übereinstimmt.

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

HooksEdit

Hooks sind die Methode von Cucumber, mit der das Setup vor dem Ausführen von Tests und das anschließende Herunterfahren durchgeführt werden können. Sie werden als ausführbare Ruby-Blöcke definiert Ähnlich wie bei JUnit-Methoden, die mit @Before, @After -Anmerkungen gekennzeichnet sind. Herkömmlicherweise werden sie unter support/ platziert und global angewendet. Es gibt drei grundlegende Arten von Hooks

  • Before – Läuft vor einem Szenario
  • After – Läuft nach a Szenario
  • Around – Übernimmt die Kontrolle und läuft um ein Szenario herum.

Zusätzliche Hooks umfassen

  • BeforeStep
  • AfterStep
  • AfterConfiguration – Wird nach der Gurkenkonfiguration ausgeführt und an übergeben Stand der Konfiguration

Before, After, and Around Hooks verwenden optional eine Liste von Tags, die Szenarien filtern, auf die sie angewendet werden. Eine Liste von Tags in derselben Zeichenfolge wird als OR behandelt, während einzelne Argumente als AND behandelt werden. Tags können optional negiert werden, indem ~ vorangestellt wird.

Beispiel für ein Tag vor dem Hook

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

Hooks werden häufig verwendet, um den Datenbankstatus aufrechtzuerhalten, normalerweise durch Bereinigen vor dem Ausführen eines Szenarios. Es ist auch möglich, eine Transaktion mit den Hooks Before und After zu starten und zurückzusetzen. Viele Cucumber-Erweiterungen bieten einen @txn -Tag für einen solchen Zweck.

Integrationen und ImplementierungenEdit

Nicht-Ruby-Implementierungen von Cucumber existieren für gängige Sprachen wie Java, JavaScript und Python. Es gibt auch Unterstützung für Frameworks für Integrationstests. Eine vollständige Liste der Implementierungen finden Sie auf Cucumber. Cucumber verfügt über integrierte Testtools, die mit vielen Continuous Integration-Konfigurationen gut funktionieren. Es gibt Gurken-Plugins für beliebte CI-Tools wie Jenkins und TeamCity sowie für IDEs wie Eclipse und RubyMine.

Nachfolgend finden Sie ein Beispiel für eine Schrittdefinition, die für Java mit Cucumber-JVM geschrieben wurde.

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

Formatter-PluginsEdit

Cucumber verwendet Formatter-Plugins, um die Ausgabe bereitzustellen. Standardmäßig werden mehrere gängige Formate bereitgestellt, darunter

  • JSON
  • HTML
  • JUnit

Verfügbare Formate sind Nicht für verschiedene Cucumber-Implementierungen standardisiert, daher können die Angebote unterschiedlich sein. Cucumber unterstützt auch umfangreiche Ausgabeformate wie Bilder und Videos.

Browser-AutomatisierungEdit

Cucumber bietet keine integrierte Browser-Automatisierung. Es funktioniert jedoch gut mit vorhandenen Programmen wie Selenium und WATiR-WebDriver. Es unterstützt das Ausführen von Tests mit Transaktionen durch Nutzung anderer Programme wie ActiveRecord.

Cucumber command-lineEdit

Cucumber verfügt über eine integrierte Befehlszeilenschnittstelle, die eine umfassende Liste von Anweisungen abdeckt . Wie die meisten Befehlszeilentools bietet cucumber die Option --help, die eine Zusammenfassung der vom Befehl akzeptierten Argumente enthält.

Mit der Befehlszeile Cucumber können definierte Tests schnell ausgeführt werden . Es unterstützt auch das Ausführen einer Teilmenge von Szenarien durch Filtern von Tags.

$ cucumber --tags @tag-name

Der obige Befehl hilft bei der Ausführung nur der Szenarien, die das haben angegeben @tag-name. Argumente können als logische OR oder AND Operation von Tags bereitgestellt werden. Abgesehen von Tags können Szenarien nach Szenarionamen gefiltert werden.

$ cucumber --name logout

Mit dem obigen Befehl werden nur die Szenarien ausgeführt, die das Wort enthalten „Abmelden“.

Es ist auch nützlich zu wissen, was schief gelaufen ist, wenn ein Test fehlschlägt. Mit Cucumber können Sie Fehler im Code mit der Option --backtrace leicht abfangen.

Gurke kann auch so konfiguriert werden, dass bestimmte Szenarien, die noch nicht abgeschlossen wurden, ignoriert werden, indem sie mit dem Tag „In Bearbeitung“ @wip markiert werden. Wenn Cucumber das Argument --wip übergeben wird, ignoriert Cucumber Szenarien mit dem Tag @wip.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.