15

私は今specflowを学ぼうとしています。現在、2 つの機能ファイルがあります。

2 番目の機能ファイルでは、最初の機能ファイルのステップを再利用しています。

Specflow は最初の機能ファイルからステップを自動的に認識し、specflow が 2 番目の機能のステップを生成したとき、それはスマートで、再利用しているステップを再生成しませんでした。

ただし、このステップは指定されたステップであり、フィーチャクラスのメンバー フィールドを初期化します。

シナリオ コンテキストを使用せずに、クラスのメンバーを初期化する別の機能ファイルからステップを再利用するにはどうすればよいですか?

編集

たとえば、複数の機能ファイルで使用されている Given I am logged in があるとします。この "Given" は、ログに記録されるユーザー オブジェクトを作成し、それをメンバーとして .cs 機能ファイルに保存します。

同じ Give を別の .feature で使用すると、Specflow は対応する .cs ファイルでそれを再生成しません。それを使用しているシナリオをデバッグすると、最初の .cs ファイルから実行されます。

しかし、最初の .cs 機能ファイルのメンバーにアクセスできません。静的メンバーを使用する予定ですが、おそらく別の解決策がありますか?

どうもありがとう。

4

4 に答える 4

0

私が行ったことの 1 つは、partial classさまざまな *.cs ファイル間で 1 つの大規模な分割を使用することです。

これにより、関連するものを独自のファイルに分けておくことができますが、それでもフィクスチャ コードを再利用するための多くのオプションが提供されます。

例 (Feature1Steps.cs)

namespace YourProject.Specs
{
    [Binding] // This can only be used once.
    public partial class YourProjectSpecSteps
    {
        // Feature 1 methods ...
    }
}

そして次の機能 (Feature2Steps.cs) のために

namespace YourProject.Specs
{
    public partial class YourProjectSpecSteps // same class, already bound
    {
        // Feature 2 methods ...
    }
}
于 2015-08-21T13:15:59.223 に答える