3

引数として渡さずに、step メソッド内でサンプル テーブルの行データにアクセスできる方法があるかどうかを知りたいですか?

ストーリー ファイル:

Given I am logged in
When I create a trade
Then a trade should be created

Examples:
|data1|data2|
|11111|22222|
|33333|44444|

ステップファイル:

@When("I create a trade")
public void createTrade(@Named("data1") String data1, @Named("data2") String data2){
    //code to create trade using data1 and data2
}

上記は正常に動作しますが、メソッド内のサンプル テーブルからデータ行にアクセスする方法が必要です。(これを実行したい理由は、すべてのストーリーのサンプル テーブルにすべての列が存在しない可能性があるためです。step メソッドで 3 * @Named をパラメーターとして指定した場合、これらの 1 つが実際の例の表にない場合、実行に失敗します。)

@When("I create a trade")
public void createTrade(){
    //check if there is a data1 column, if so get value and do something
    //check if there is a data2 column, if so get value and do something
}

ご協力いただきありがとうございます

4

2 に答える 2

0

シナリオ:-

Given data insert in DemoSheet
 |demoNumber|demoName|
 |101|Demo1|
 |102|Demo2|
 |103|Demo3|
 |104|Demo4|
 |105|Demo5|

シナリオから値を取得する Java クラス:-

@Given("data insert in DemoSheet $parameterTable")
public void setDataToSheet(ExamplesTable parametersTable)
        throws RowsExceededException, WriteException, IOException {

    List<String> demonum = new ArrayList<String>();
    List<String> demoname = new ArrayList<String>();

    for (Map<String, String> row : parametersTable.getRows()) {
        Iterator it = row.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pairs = (Map.Entry) it.next();
            if (pairs.getKey().equals("demoNumber")) {
                demonum.add((String) pairs.getValue());
            } else if (pairs.getKey().equals("demoName")) {
                demoname.add((String) pairs.getValue());
            }
        }
    }
    for(String s:demonum)
    {
       System.out.println(s.getDemonum);
       System.out.println(s.getDemoname);
    }
}

ここでは、サンプル テーブル パラメータを使用して複数の行をフェッチできます。複数の行をシナリオから Java クラスに渡しています。

于 2015-01-02T09:00:47.603 に答える