2016-04-06 17 views
0

キュウリが初めてです。キュウリによるUIオートメーションのユースケースは以下の通りです。キュウリ+ java:ステップ1で返されたパラメーターをステップ2に渡す

以下の例を考慮してください。 TestNGの中

@Test {"formname"} 
public void createAndSearchForm(String formName) 
{ 
    //In below step, it create form by name (formName-timestamp) and return the formname. e.g. it create form and return "formname-06042016184426" 
    // In this method we create form name by appending time stamp to formname passed to method. Since application didn't accept same name we need to append timestamp 
    // to formname. 
    String newFormName=createForm(formName); 

    // In below method we pass above newFormName and verify whether form is created or not by searching form name. 
    asserTrue(searchCreatedForm(newFormName)); 

} 

は、今、私たちはキュウリに移動していると私たちはキュウリに上記の例を達成する必要があります。

機能:フォーム。


シナリオ:名前「フォーム名」でフォームを作成し、与えられたアプリケーション
にログイン
次に「フォーム名」私たちが直面している

号検索 - > 、我々ドンSTEP1で返さなっているフォーム名をそれをstep2に渡す方法はわかりません。 シナリオ内では、このフォーム名をさまざまなクラスに実装された異なるステップ定義に渡す必要があります。

ネットで検索しようとしましたが、私たちのニーズに固有のものは見つかりませんでした。

誰かが私たちにいくつかの示唆/提案を与えることができれば、大きな助けになるでしょう。

+0

単純な答えは、クラス変数です。 – MikeJRamsey56

答えて

0

EDIT 複数のステップファイル間で変数を共有する必要がある場合、それらを定義するスーパークラスを作成します。私のステップファイルのそれぞれは、そのスーパークラスを拡張して、その変数(または変数)へのすべてのアクセスを与えます。

コメントに記載されているように、クラス変数を静的な状態にすることに注意してください。私は、すべての静的変数の値を、クラス・コンストラクターの値(たとえば、ヌル)に設定して、シナリオごとに値がリセットされるようにします。

--END edit--

public class YourStepDefinitions { 

    private String interStepParameter; 

    @Given("^Some first step$") 
    public void first_step() { 

     interStepParameter = "foo"; 

    } 

    @Then ("^A second step$") 
    public void second_step() throws Throwable { 
     if (interStepParameter.equals("foo") { 
      // Do something 
     } 
    } 
} 
+0

ありがとうマイク。 このアプローチを考えましたが、この変数を別のクラスに実装されている多くのステップ定義に渡す必要があります。 同じシナリオを持つ多くのテストケースがあります。このように実装することは良い考えではないと考えました。 –

+0

ドライバはクラス間で共有されています。あなたが並行して走っていないと仮定すると、ドライバのようにハンドルが渡される別の静的変数を作成します。 – MikeJRamsey56

+0

テスト中に変数が設定され、次のテストの前にリセットされない場合、このようにしてシナリオ間で状態が誤って漏れる可能性があります。これにより、テストが不安定で不安定になります。また、これは、この変数を必要とするすべてのステップが同じファイル内にある場合にのみ機能します。 Dependency Injectionを使用して、異なるステップ間で共有したいフィールドとオブジェクトを管理することを検討してください。 DIコンテナはその作成を管理し、正しく構成されていればその破壊を管理することができます。 – Marit

関連する問題