TL; DR; Wie kann ich einen Specflow-Test erstellen, der einen anderen Test als ersten Schritt aufruft?Kann ich in Specflow einen Test als Schritt eines anderen ausführen?
Given I already have one specflow test
And I want to run another test that goes deeper than the first test
Then I create a second test that runs the first test as its first step
And I add additional steps to test the deeper functionality
Sorry, wenig specflow es Humor.
zB Ich habe einen Test, der bereits einen Verkauf erstellt:
Given I want to create a sales order
And I open the sales order page
And I click the add new order button
Then a new sales order is created
Und ich möchte einen weiteren Test haben, die eine Vertriebslinie
Und einen weiteren Test Tests hinzufügen, die den Verkauf Tests abgeschlossen
Und ein weiterer Test, der den Verkauf
Und .. so weiter
annulliertAlle diese Tests würden mit den gleichen ersten vier Schritten wie der einfache Test beginnen, der das DRY-Prinzip durchbricht. Also wie kann ich es so machen, dass der erste Schritt des 2. Tests nur den ersten Test durchführt? zB so etwas wie:
Given I have run the create sales order test // right here it just runs the first test
And I add a sales order line
Then the order total is updated
Wenn jeder Test mit den gleichen ersten vier Zeilen beginnt und später merke ich, dass ich brauche die einfache Erstellen Verkauf Test ändern, dann werde ich auch gehen müssen und finden und repariere überall sonst diese vier Zeilen.
BEARBEITEN: Beachten Sie, dass dies auch funktionsübergreifend möglich sein sollte. Beispiel: Der obige einfache Test wird in der Verkaufsfunktion definiert. Aber ich hätte auch Kredite verfügen, und das würde erfordern einen Verkauf jedes Mal um die Schaffung der Lage sein, es kreditieren:
Given I want to credit a sale
And I run the create sales order test
And I complete the the sale
And I click the credit button
Then the sale is credited
Ihren 'schaffen I habe den Kundenauftrag test' Schritt erstellen laufen, die die drei vorherige' Given' ausführt Schritte Methoden nicht funktioniert? Oder willst du einen anderen Weg? Ich bezweifle, dass Sie den Assert-Teil in Ihren folgenden Tests wiederholen möchten. –
Es macht mir nichts aus, dass es die Behauptungen wiederholen muss, die im ersten Test existieren werden. Ich möchte es ausführen können, ohne die gleichen 4 Schritte in viele verschiedene Tests schreiben zu müssen. –
ja, aber warum erstellst du nicht den neuen 'Given' wie deinen 'something like' Teil, der die drei vorherigen' Given' manuell aufruft? Passt auch zu dem Szenario in Ihrer Bearbeitung, da Sie Ihren 'Ich habe den Schritt zum Erstellen eines Kundenauftrags-Tests ausführen können, wo Sie möchten, wiederverwenden können. Du warst zu 99% in deiner Frage. –