2010-12-07 18 views
6

Esto ya puede haber sido planteado, una pregunta estúpida tal vez.¿Cómo puedo eliminar los datos de inicialización en SpecFlow

De todos modos, he estado buscando en SpecFlow y me pregunto cómo puedo eliminar mis datos iniciales para la función. Estos datos iniciales se comparten en diferentes escenarios. ¿Hay una manera elegante de hacer esto? ¿Tal vez la capacidad de inyectar un evento cuando testRunner.OnFeatureEnd() invoca?

+0

Tuve que mencionar que si estás cargando datos en la base de datos, entonces lo que estás haciendo son pruebas de integración, no pruebas de unidades. Una prueba unitaria se burlaría de la base de datos para que solo esté probando una sola clase (unidad) a la vez. –

+0

Sí, esto no es pruebas unitarias, pero lo que pretendo usar SpecFlow es realmente para las pruebas de aceptación que requeriría una configuración de fondo real en algún almacén de datos. – Leo

+0

El alcance de la transacción es tu amigo. – Chad

Respuesta

8

Puede usar ganchos.

Los ganchos son métodos que se ejecutan en ciertos momentos durante la ejecución de las características de Gherkin.

Hay varios ganchos para diferentes eventos durante la ejecución.

En SpecFlow define ganchos en sus clases [Encuadernación] con un atributo especial. Los siguientes ganchos están disponibles:

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

Ejemplos:

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

Tenga en cuenta que no fue hasta la versión 1.4.0 de SpecFlow que pudo aplicar el alcance a las definiciones de pasos: https://github.com/techtalk/SpecFlow/blob/master/Tests/FeatureTests/ScopedSteps/ScopedStepsBindings.cs Hasta ese momento señalan que eran globales, y que todos los pasos Antes/Después se ejecutarían antes de cada Escenario/Función independientemente de la clase de Enlace en la que se definieron. –

+0

gracias por señalar eso, Martin. – Leo

Cuestiones relacionadas