私は SpecFlow に足を踏み入れていますが、本当に楽しんでいます。
いくつかの厄介な問題を除いて...機能やシナリオのセットアップコードなど.
という 1 つの「汎用」ファイルInfrastructureSteps.cs
には、すべてのシナリオで実行する必要がある一般的なセットアップ コードがあります。したがって、私のメソッドは次のようになります。
[BeforeScenario]
public void SetupDbContext()
{
// define some basic stuff, set up a database transaction context etc.
}
これはすべてのシナリオの前に実行する必要があり、これまでのところ問題なく機能しています。
しかし今、テスト固有のステップ ファイルに 2 つのシナリオがあり、実行する前に非常に広範なセットアップが必要です。.feature
だから私はタグで彼らのシナリオをマークしました:
@needs_extra_setup
Scenario: .....
Given .....
When .....
Then ......
テスト固有のBeforeScenario
セットアップ方法を実装しました。
[BeforeScenario("needs_extra_setup")]
public void DoExtraSetupForMyScenario()
{
// do stuff
}
それは機能します-呼び出されます-しかし、汎用メソッドが呼び出される前[BeforeScenario]
に呼び出されます:-(したがって失敗します-その汎用セットアップメソッドでセットアップされているものが存在せず、コードが失敗します。
では、SpecFlow でメソッドを並べ替える方法はあり[BeforeScenario]
ますか? または、オーバーライドされたメソッドで基本メソッドを呼び出すように、特定の[BeforeScenario]
メソッドに「基本」メソッドを最初に実行するように指示できますか?[BeforeScenario]
もちろん、その「ベース」[BeforeScenario]
メソッドを明示的に呼び出すこともできますが、それは大ハンマーのアプローチのように思えます.....
何か案は?考え?ポインタ?