是否有可能有两个步骤定义类,第一个在一个命名空间/项目中,第二个在另一个中? 我喜欢这个:
我运行的测试项目: namespace:ABZ.ExcelTest 类名:ABZ.ExcelTest.ExcelStepDefinition
我的另一个测试逻辑项目: namespace:ABZ.OfficeAddInTestLogic 类名:ABZ.OfficeAddInTestLogic.StepDefinition
我的两个类都有[Binding]属性,但这个属性不在测试项目中 (ABZ.OfficeAddInTestLogic.StepDefinition)无法找到,我得到NUnit错误:
找不到该步骤的匹配步骤定义。使用以下代码创建一个: ...
是否可以在不同的项目中使用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
课程的实际测试项目中正确选取。这让我可以覆盖和扩展常用功能。