質問
1つの名前空間/プロジェクトに最初に、もう1つの名前に2つ目のステップ定義クラスがあることは可能ですか?私はこのようなものです:
私が実行する私のテストプロジェクト:名前空間:abz.exceltestクラス名:abz.exceltest.excelstepdefinition
テストのロジックである私の他のプロジェクト:名前空間:abz.officeaddintEstlogicクラス名:abz.officeaddintestlogic.stepdefinition
私は両方のクラスに[バインディング]属性を持っていますが、テストプロジェクトにないこのクラス(abz.officeaddintestlogic.stepdefinition)が見つかりません。
ステップに一致するステップ定義は見つかりません。次のコードを使用して1つを作成します。
さまざまなプロジェクトで2つのステップ定義クラスを作成することは可能ですか?
解決
はい、それは - その機能は外部ステップと呼ばれます(参照 https://github.com/techtalk/specflow/blob/master/tests/featuretests/externalsteps/externalsteps.feature)
あなたがおそらく欠けているのは、このようなapp.config設定です:
<specFlow>
<stepAssemblies>
<stepAssembly assembly="ExternalStepsCS" />
</stepAssemblies>
この場合、外部STEPSCSと呼ばれる外部アセンブリのステップを探します。
他のヒント
私はしばしば「テストヘルパー」ライブラリを持ち、複数のテストプロジェクト間で共通コードが共有されます。この共有ライブラリにクラスがあります。電話してみましょう CucumberBase
. 。それから、実際のテストプロジェクトでは、次のようなクラスがあります。
[Binding]
public class SomeFeatureSpecs : CucumberBase
{
...
}
すべての大衆 CucumberBase
でタグ付けされた方法 [Given()]
/[When()]
/[Then()]
/等。私の実際のテストプロジェクトで、 SomeFeatureSpecs
クラス。これにより、共通の機能もオーバーライドして拡張できます。