2011-03-18 86 views
12

是否有可能具有两个步骤定义类,首先在一个名称空间/项目中,而另一个在另一个中? 我有这样的:Specflow步骤定义类在不同的项目中

我的测试项目,我运行: 命名空间:ABZ.ExcelTest 类名:ABZ.ExcelTest.ExcelStepDefinition

我的其他项目,这是测试逻辑: 命名空间:ABZ。 OfficeAddInTestLogic 类名称:ABZ.OfficeAddInTestLogic.StepDefinition

我有[绑定]在我的两个类属性,但是这一次是不是在测试项目 (ABZ.OfficeAddInTestLogic.StepDefinition)无法找到,我得到NUnit的错误:

找不到与该步骤匹配的步骤定义。使用下面的代码来创建一个: ...

是否有可能在不同的项目中有2个步骤定义类?

回答

19

是的,它是 - 该功能被称为外部步骤(见https://github.com/techtalk/SpecFlow/blob/master/Tests/FeatureTests/ExternalSteps/ExternalSteps.feature

什么你可能缺少的是一个app.config设置是这样的:

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

那会看在这种情况下,在外部程序集中称为ExternalStepsCS。

+0

是的,你说得对,我没有使用配置文件来配置specflow。谢谢你。 :) – Vajda 2011-03-18 21:47:58

1

我经常会有一个“测试助手”库,其中包含多个测试项目共享的代码。我将在这个共享库中开设一个课程,我们称之为CucumberBase。然后,在我的实际测试项目中,我有一个这样的类:

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

每一个公共CucumberBase方法被标记为[Given()]/[When()]/[Then()] /等。在我的实际测试项目中,在SomeFeatureSpecs类中正确拾取。这让我可以重写和扩展通用功能。