不同项目中的Specflow步骤定义类

时间:2011-03-18 17:53:04

标签: specflow

是否有可能有两个步骤定义类,第一个在一个命名空间/项目中,第二个在另一个中? 我喜欢这个:

我运行的测试项目: namespace:ABZ.ExcelTest 类名:ABZ.ExcelTest.ExcelStepDefinition

我的另一个测试逻辑项目: namespace:ABZ.OfficeAddInTestLogic 类名:ABZ.OfficeAddInTestLogic.StepDefinition

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

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

是否可以在不同的项目中使用2步定义类?

2 个答案:

答案 0 :(得分:19)

是的 - 该功能称为外部步骤(请参阅https://github.com/techtalk/SpecFlow/blob/master/Tests/FeatureTests/ExternalSteps/ExternalSteps.feature

您可能缺少的是app.config设置,如下所示:

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

在这种情况下,这将在外部程序集中查找名为ExternalStepsCS的步骤。

答案 1 :(得分:1)

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

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

使用CucumberBase / [Given()] / [When()] /等标记的每个公开[Then()]方法。在SomeFeatureSpecs课程的实际测试项目中正确选取。这让我可以覆盖和扩展常用功能。