2011-03-18 6 views
12

Bir ad alanında/projede, diğeri ise diğerinde olmak üzere iki adım tanım sınıfına sahip olmak mümkün mü? Böyle vardır: ad: Ben çalıştırmakFarklı projelerde Specflow adım tanımı sınıfları

Benim test projesi ABZ.ExcelTest.ExcelStepDefinition

Benim diğer proje testi için Mantık geçerli:: ad: ABZ sınıf adı ABZ.ExcelTest. OfficeAddInTestLogic sınıf adı: ABZ.OfficeAddInTestLogic.StepDefinition

Ben hem benim sınıfları üzerinde niteliği fakat test projesi (ABZ.OfficeAddInTestLogic.StepDefinition) bulunamıyor değil bu bir [Bağlama], ben NUnit hata alıyorum:

Adım için eşleşen bir adım tanımı bulunamadı. Oluşturmak için aşağıdaki kodu kullanın: ...

Farklı projelerde 2 adım tanım sınıfına sahip olmak mümkün mü?

cevap

19

Evet edilir - bu özellik denir Dış adımlar (https://github.com/techtalk/SpecFlow/blob/master/Tests/FeatureTests/ExternalSteps/ExternalSteps.feature bakınız)

Ne muhtemelen eksik böyle ayarı bir app.config geçerli:

<specFlow> 
<stepAssemblies> 
    <stepAssembly assembly="ExternalStepsCS" /> 
</stepAssemblies> 

bakacağız Bu durumda ExternalStepsCS adlı harici bir derlemedeki adımlar için.

+0

Evet, haklısınız, specflow'u yapılandırmak için config dosyası kullanmadım. Bunun için teşekkürler. :) – Vajda

1

Genellikle birden çok sınama projesi arasında paylaşılan ortak kodla birlikte bir "Test Yardımcıları" kitaplığına sahip olacağım. Bu paylaşılan kitaplıkta bir dersim olacak, ona CucumberBase diyelim. [Given()]/[When()]/[Then()]/vs ile etiketlenmiş

[Binding] 
public class SomeFeatureSpecs : CucumberBase 
{ 
    ... 
} 

Her kamu CucumberBase yöntemi: Sonra, benim gerçek test projesinde, böyle bir sınıf olacak. gerçek test projemde SomeFeatureSpecs sınıfı içinde doğru şekilde seçildi. Bu, ortak işlevselliği de geçersiz kılmama ve genişletmemize olanak sağlar.