2016-11-04 3 views
0

Ich würde eine vordefinierte Zeichenfolge in meine Schrittdefinition in Gurke mit Java einfügen. Hier ist, was ich habe:Wie füge ich eine String-Variable in meine Schrittdefinition in Cucumber-JVM ein?

Java-Code

public String temp = "hello"; 
//insert temp into my step: 
@Then("^the "+temp+" should be empty$") 
public void the_should_be_empty() throws Throwable { 
    //do things 
} 

Aber ich bekomme immer wieder diese Fehler:

„Der Wert für Annotation-Attribut Then.value muss ein konstanter Ausdruck sein "

Also, Wie füge ich eine Zeichenfolge in meine Erfassung Schritt?

=============

Mehr Infos

Ich versuche, eine Setlist von „globalen Schlüsselwörter“ in vielen meiner BDD Schritt definitios verwendet zu haben. Wenn ich also ein neues "globales Schlüsselwort" hinzufüge, wird es in allen meinen BDDs geändert. Zum Beispiel könnte (red|yellow|green) in 10 verschiedenen BDD-Schritten verwendet werden, und ich möchte blue hinzufügen, ohne alle 10 Schritte zu ändern. Stattdessen möchte ich eine String-Variable, die die Liste enthält, und dann diese Variable in meine BDD einfügen.

+0

versuchen Sie, 'final' Schlüsselwort hinzuzufügen es macht alles konstant –

+0

@NeelaySrivastava gute Idee! Aber es hat nicht funktioniert :( – Kayvar

+0

Können Sie die Zeichenfolge in der Feature-Datei übergeben und verwenden Sie eine nicht erfassende Gruppe in Ihrer Schrittdefinition - (?: Ihr Text). – Grasshopper

Antwort

4

Die kurze Antwort ist: "Sie nicht".

Je länger ist, dass der Wert in der Annotation eine Konstante sein muss. Es kann nicht etwas sein, das Laufzeit konstruiert wird.

Die Art und Weise, in der Cucumber Schritte zwischen Java und Szenarios abgleicht, erfolgt mithilfe des regulären Ausdrucks, den Sie in der Annotation definieren. Der Prozess schlägt fehl, wenn der Wert zur Laufzeit erstellt wird. Der Cucumber-Runner sucht und verwendet alle regulären Ausdrücke, die in den Schrittimplementierungen gefunden wurden, und durchsucht dann die Feature-Dateien, um Code mit Szenarioschritten abzugleichen.

Aus diesem Grund können Sie die Zeichenfolge nicht zur Laufzeit erstellen.

Es wäre interessant zu verstehen, warum Sie die Laufzeit der Zeichenfolge erstellen möchten. Was versuchst du zu erreichen? Eine Konsequenz der Erstellung vieler verschiedener Zeichenfolgen ist, dass in Ihren Szenarien viele verschiedene Schritte vorhanden sein müssen, die übereinstimmen sollten. Für mich fühlt es sich an, als hätten Sie etwas falsch verstanden. Bitte teilen Sie mit, was Sie erreichen möchten und vielleicht können wir Ihnen mit einem anderen Ansatz helfen.

+0

Dang. Ok für die Erklärung! – Kayvar

Verwandte Themen