2016-03-23 6 views
0

Ich möchte Seriennummern in den Namen der Feature-Methoden im Spock-Framework hinzufügen. Wie kann ich das machen?Wie Nummer in Feature-Methodenname in Spock-Framework hinzugefügt werden

ist ein Code-Snippet zur Verdeutlichung angegeben:

class Test extends Specification { 

    static def count = 0; 

    def setup() { 
     count++ 
    } 

    def '${count} This is first scenario'() { 
     ... 
    } 

    def '${count} This is second scenario'() { 
     ... 
    } 

} 

Nach diesen Code ausgeführt wird, zeigt es in dem Bericht:

$ {count} Das erste Szenario ist

$ { count} Dies ist das zweite Szenario

Aber ich erwarte:

1 Das erste Szenario ist

2 Dies ist zweites Szenario

Antwort

0

es nicht möglich ist.

In def '${count} This is first scenario'() deklarieren Sie eine Methode. Ein Methodenname kann nicht dynamisch generiert werden.

Sie können Parameter des Tests in eine Vorlage im Methodennamen mit datengesteuerten Tests und @Unroll injizieren, aber ich denke nicht, dass es das ist, was Sie brauchen.

Ein Beispiel aus der Dokumentation:

@Unroll 
def "maximum of #a and #b is #c"() { 
expect: 
    Math.max(a, b) == c 

    where: 
    a | b || c 
    3 | 5 || 5 
    7 | 0 || 7 
    0 | 0 || 0 
} 
+0

Ja, Parameter zu injizieren ist nicht das, was ich tun möchte. Danke für deine Antwort trotzdem. – Shahid

1

Dies sollte funktionieren:

@Unroll 
def "foo #iterationCount" { ... } 
+0

und IterationCount muss in wo Block vorhanden sein, nicht wahr? – Shahid

+1

Nein, es ist eine eingebaute Variable. –

+0

Wird diese integrierte Variable in der Setup-Methode erhöht oder automatisch inkrementiert? – Shahid

0

Verwenden Sie die @Share den Vermerk mit Zähl- und statischen Modifikator löschen.

Sie können Spock angeben, welche Objekte Sie über alle Testmethoden hinweg überleben möchten, indem Sie die Annotation @Shared verwenden.

+1

Es wäre besser, wenn Sie Ihrer Antwort einen Code hinzufügen würden. –

Verwandte Themen