2017-10-27 20 views
0

初めてフィーチャファイルを実行するとき、実行時にフィーチャファイルのフィールドを更新しています。他のフィーチャファイルに渡すには、同じフィールドの値が必要です。ある機能ファイルのデータをjavaを使用して別の機能ファイルに渡すことは可能ですか?ここで1つのフィーチャファイルのデータ(例)を他のフィーチャファイルに渡すにはどうすればよいですか?

feature file 1: 
scenario outline: test xxx functionality 
Examples : 
|user|password| 
|abc|pass| 

feature file2: 
Scenario Outline : test yyy functionality 
Examples: 
|user|password| 
| |  | 

、私はファイル2つまりを特色に渡される機能FILE1に、ABCとパスが機能ファイル2 の例にコピーする必要があり、データが事前にsuggest.Thanksを行ってくださいしたいです!!

答えて

0

厳密に言えば、あるBDDテストから別のBDDテストにデータを渡すべきではありません。これは、独立したユニットのBDDテストを行うという目的を打破します。一般に、ソフトウェア単体テストは互いに独立していると考えられます。

@When("^I login with username \"(.*)\"$") 
public void enterUsername(String username) { 
    // do something with username 

    // make a database call and insert the username in a temporary table 
} 

続いて、第二の特徴ファイルにあなたが同じテーブルを照会し、ユーザー名を取得できます言われて、あなたは確かに一歩定義からいくつかの状態を保持して、それを別のものを再利用することができ

これはあなたが気にするものではないかもしれませんが、一般的な考え方は、最初のテスト中にいくつかの状態を保持して、2番目のテストで使用できるようにすることです。

+0

これは、あるシナリオと次のシナリオとの間で変数の状態が失われ、データベースもリセットされることを説明していないため、OPにとって少し誤解を招くことです。あなたの最終的な文章で 'test'を使うと、ここでのシナリオやステップ定義について話していますか?ステップ定義はテストではありません。 – diabolist

+0

@diabolist 'データベースはリセットされるでしょう...いいえ、それはできません。そして、このメソッドを使ってステートレスであると思われるステップの問題を回避します。 –

+0

キュウリは、デフォルトではシナリオ間でデータベースをリセットしたいと考えています(ステップはありません)。ステップについて話しているときとシナリオについて話しているときは明確ではないので、答えは分かりません。同じシナリオで使用する場合にのみ、ステップ定義間でデータを共有することができます。 – diabolist

1

1つの機能ファイルから別の機能ファイルへの値の受け渡しはサポートされていません。シナリオを特定の順序で実行するように強制します。これはよく知られている反パターンです。あなたのシナリオは、任意の順序で実行することが可能でなければならず、あるシナリオが別のシナリオの前に実行されることが予想される場合は不可能です。

したがって、2番目の機能ファイルの設定をどのように再利用できますか?短い答えはありません。代わりに、セットアップが必要な機能がテスト中のシステムを準備するために使用できるヘルパーを実装します。実行前にこの設定が必要な各シナリオからこのヘルパーを呼び出します。これは多くの不必要な作業として聞こえるかもしれませんが、お互いに依存するシナリオでは多くの問題からあなたを救い、実行の間に予期せぬ状態にあなたのシステムを残します。