12

最初に 1 つの名前空間/プロジェクトに、2 番目に別の名前空間/プロジェクトにある 2 つのステップ定義クラスを持つことは可能ですか? 私はこのようにしています:

私が実行するテスト プロジェクト: 名前空間: 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
{
    ...
}

/ // etcでタグ付けされたすべてのパブリックCucumberBaseメソッド。クラス内の実際のテストプロジェクトで正しく取り上げられます。これにより、一般的な機能をオーバーライドおよび拡張することもできます。[Given()][When()][Then()]SomeFeatureSpecs

于 2012-06-18T19:33:02.963 に答える