12

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

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

我的另一个项目是用于测试的逻辑:命名空间:ABZ.OfficeAddInTestLogic 类名:ABZ.OfficeAddInTestLogic.StepDefinition

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

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

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

4

2 回答 2

19

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

您可能缺少的是这样的 app.config 设置:

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

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

于 2011-03-18T18:12:18.290 回答
1

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

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

每个带有/ / /etcCucumberBase标记的公共方法。在我的实际测试项目中,在课堂上得到正确的选择。这也让我可以覆盖和扩展常用功能。[Given()][When()][Then()]SomeFeatureSpecs

于 2012-06-18T19:33:02.963 回答