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
.