2016-03-31 11 views
2

[AfterTestRun]Warum ist mein Specflow [AfterTestRun] Hook aufgerufen zweimal

Dieser Haken für mich zweimal aufgerufen wird.

Mein C# -Code ist korrekt und am Ende von jedem Szenario Ich speichere meine Ergebnisse in einem Concurrent Bag.

Dann verwende ich den [AfterTestRun] Hook, um den Concurrent Bag aufzurufen und die Daten in einer Datenbank zu speichern. Ich sehe doppelte Daten, also nehme ich an, dass es zweimal aufgerufen wird.

Zusätzliche Information:
ich SpecRun bin mit meinen Tests parallel mit dem folgenden Profil

Execution stopAfterFailures = "1" retryCount = "0" testThreadCount = "3" testSchedulingMode =“laufen Sequential“

Installierte Pakete
SpecFlow Version 2.0.0
SpecRun.SpecFlow 1.3.0
SpecRun.Runner 1.3.0

ich SpecRun.SpecFlow bin mit meinen Tests auszuführen.

Wie verhält sich dieser Hook auch, wenn mehrere Szenarien in jedem Feature vorhanden sind? Zur Zeit habe ich 1.

Dank

+0

Welche Version von SpecFlow verwenden Sie? Welchen Test Runner verwenden Sie (NUnit, XUnit, SpecFlow + Runner, MSTest)? –

+0

Hallo, ich habe meine Frage aktualisiert. Ich verwende SpecRun.SpecFlow, um meine Tests lokal/in Visual Studio Online auszuführen –

+0

ist Ihre [AfterTestRun] -Methode in einer Klasse, die vererbt wird? –

Antwort

1

Schritte sind global in specflow, Vererbung bekommen Schritt Wiederverwendung nicht erforderlich ist. In der Tat, wenn Sie Step-Klassen erben, werden die Schritte, die sie enthalten, dupliziert, und Sie sehen das Problem, das Sie hier haben. Weitere Details finden Sie unter this answer.

Die einfache Lösung besteht darin, die [BeforeScenario] Methoden in ihre eigene Klasse zu platzieren, und nicht Ihre Step-Klassen erben dies. Wenn Sie den Status zwischen Ihren Schritten und Ihren Vorher/Nachher-Szenarien teilen müssen, verwenden Sie eine der Möglichkeiten zur Freigabe des Status outlined here