2010-12-07 14 views
6

löschen Dies kann bereits aufgewachsen sein, eine dumme Frage vielleicht.Wie kann ich Seed-Daten in SpecFlow

Wie auch immer, ich habe SpecFlow untersucht und mich gefragt, wie ich meine Seedaten für diese Funktion löschen kann. Diese Seed-Daten werden in verschiedenen Szenarien geteilt. Gibt es eine elegante Möglichkeit, dies zu tun? Vielleicht die Fähigkeit, ein Ereignis zu injizieren, wenn testRunner.OnFeatureEnd() aufgerufen wird?

+0

Ich musste erwähnen, dass, wenn Sie Daten in die Datenbank laden, das, was Sie tun, Integrationstests sind, nicht Komponententests. Ein Komponententest würde die Datenbank so verspotten, dass nur eine einzelne Klasse (Einheit) gleichzeitig getestet wird. –

+0

Ja, dies sind keine Komponententests, aber was ich beabsichtige, SpecFlow zu verwenden, ist wirklich für Akzeptanztests, die eine tatsächliche Hintergrundinstallation für einen Datenspeicher erfordern würden. – Leo

+0

Transaktionsumfang ist dein Freund. – Chad

Antwort

8

Sie können Haken verwenden.

Hooks sind Methoden, die zu bestimmten Zeiten während der Ausführung von Gherkin-Features ausgeführt werden.

Es gibt mehrere Hooks für verschiedene Ereignisse während der Ausführung.

In SpecFlow definieren Sie Hooks in Ihren [Binding] -Klassen mit einem speziellen Attribut. Folgende Haken stehen zur Verfügung:

[BeforeTestRun], [AfterTestRun], [BeforeFeature], [AfterFeature] [BeforeScenario], [AfterScenario], [BeforeScenarioBlock], [AfterScenarioBlock], [BeforeStep], [Afterstep]

Beispiele:

https://github.com/techtalk/SpecFlow-Examples/blob/master/ASP.NET-MVC/BookShop/BookShop.AcceptanceTests.Selenium/StepDefinitions/BookSteps.cs

https://github.com/techtalk/SpecFlow/blob/master/Tests/FeatureTests/BeforeAfterHooks/BeforeAfterHooksSteps.cs

+0

Beachten Sie, dass Sie die Schrittdefinitionen erst ab Version 1.4.0 von SpecFlow definieren konnten: https://github.com/techtalk/SpecFlow/blob/master/Tests/FeatureTests/ScopedSteps/ScopedStepsBindings.cs Bis dahin Punkt sie waren global, und alle Vorher/Nachher-Schritte würden vor jedem Szenario/Feature unabhängig von der Binding-Klasse, in der sie definiert wurden, ausgeführt werden. –

+0

Danke, dass du das herausgebracht hast, Martin. – Leo