2010-12-07 13 views
6

'daki tohum verilerini nasıl silebilirim? Bu, daha önceden oluşturulmuş olabilir, belki de aptalca bir soru.SpecFlow

Her neyse, SpecFlow'a bakıyorum ve özellik için tohum verilerimi nasıl silebileceğimi merak ediyorum. Bu tohum verileri farklı senaryolarda paylaşılmaktadır. Bunu yapmanın zarif bir yolu var mı? Belki de testRunner.OnFeatureEnd() işlevi çağrıldığında bir olay enjekte etme yeteneği?

+0

Veritabanına veri yüklüyorsanız, yaptığınız şeyin bir bütünleme testi olduğunu, ünite testini değil. Bir birim testi, veritabanını her zaman tek bir sınıfa (ünite) test edecek şekilde alay ederdi. –

+0

Evet, bu birim testleri değil, SpecFlow'u kullanmak istediğim şey gerçekten bazı veri deposuna gerçek arkaplan ayarlaması gerektiren kabul testi için. – Leo

+0

İşlem Scope arkadaşınız. – Chad

cevap

8

Kancaları kullanabilirsiniz.

Kancalar, Gherkin özelliklerinin yürütülmesi sırasında belirli zamanlarda yürütülen yöntemlerdir.

Yürütme sırasında farklı etkinlikler için birkaç kanca vardır.

SpecFlow'da, [Binding] sınıflarınızdaki kancaları özel bir öznitelikle tanımlarsınız. aşağıdaki kanca kullanılabilir:

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

Örnekler:

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

SpecFlow'un 1.4.0 sürümüne kadar, adım tanımlarını kapsayabildiğini unutmayın: https://github.com/techtalk/SpecFlow/blob/master/Tests/FeatureTests/ScopedSteps/ScopedStepsBindings.cs Küresel olduklarını ve tüm Önceden/Sonra adımlarının, tanımlandıkları Binding sınıfından bağımsız olarak her bir Senaryo/Özellikten önce çalışacaklarını belirtirler. –

+0

Bunu işaretlediğiniz için teşekkürler, Martin. – Leo