私は、その機能のすべてのシナリオで再利用できる特定の機能に関する情報を格納するために FeatureContext を使用しています。ただし、すべての機能で再作成したくないログイン情報などがあります。[BeforeTestRun] 属性を使用してこれを保存したいのですが、SpecFlow にはこの情報を保存する何らかのグローバル コンテキスト機能 (log4net など) があるので、すべての機能で再利用できますか?
4363 次
1 に答える
4
SpecFlow にはグローバル コンテキスト コンストラクトがありませんが、バインディング/機能間でデータを共有するのに役立ついくつかのオプションがあります。
静的メンバー
静的フィールド/プロパティを使用して、テスト実行中にすべての機能で使用できるオブジェクトを設定できます。ただし、テストを並行して実行する場合は、初期化とこのフィールドへの変更可能なアクセスを同期する必要があるため、スレッド セーフに注意してください。シナリオごとにこのデータを変更したい場合は、アクセス時にオブジェクトをコンテキストに設定できます。このようにして、デフォルトを設定し、シナリオに独自のコピーを持たせることができます。
コンテキスト注入
SpecFlow コンテキスト注入を使用して、コンストラクターを介してオブジェクトをステップ定義に注入できます。このようにして、デフォルト コンストラクターを使用して型を初期化し、次のように型をステップ定義に渡すことができます。
[Binding]
public class MyStepDefinition
{
private readonly MyContextData contextData;
public MyStepDefinition(MyContextData contextData)
{
this.contextData = contextData;
}
}
より詳しい情報:
https://github.com/techtalk/SpecFlow/wiki/Sharing-Data-between-Bindings
于 2015-07-31T19:34:49.277 に答える