【问题标题】:How to Iterate Datatable with type List<Class> in Cucumber如何在 Cucumber 中迭代 List<Class> 类型的数据表
【发布时间】:2018-03-05 18:51:38
【问题描述】:

我有以下带有给定注释的功能文件

Given user have below credentials
|user       |password |
|cucumber1  |cucumber |
|cucumber2  |cucumber |

我是在数据模型下创建的

public Class DataModel{
   public string user;
   public String password;
}

尝试将数据提取到黄瓜步骤定义中,如下所示

Public Class stepdefinition {
 @Given("^user have below credentials$")
   Public void user_have_below_credintials(List<DataModel> dm){

       //Iterator or foreach is required to fetch row,column data from dm
   }
}

请帮助我如何迭代对象“dm”以获取行和列值

【问题讨论】:

    标签: java selenium cucumber cucumber-java


    【解决方案1】:
    // The old way
    for (int i = 0; i < dm.size(); i++) {
        DataModel aDataModel = dm.get(i);
        String username = aDataModel.user;
        String password = aDataModel.password;
    }
    
    // A better way if java5+
    for (DataModel aDataModel : dm) {
        String username = aDataModel.user;
        String password = aDataModel.password;
    }
    
    // another way if java8+
    dm.forEach(aDataModel -> {
        String username = aDataModel.user;
        String password = aDataModel.password;
    });
    

    请注意,按照我编写的方式,变量在循环之外将不可用。只是一个迭代和访问列表中每个 DataModel 属性的演示。

    要记住的是,您将 DataModel 对象列表描述为数据表。但它不是一个表格,它只是一个包含在一个对象中的值的集合,你有一个列表。您可能正在显示它,或者选择将其概念化为您脑海中的数据表,但您的代码所描述的模型并非如此,这意味着您不会像表一样遍历它。一旦您访问“行”,“列”就没有定义的顺序,您可以按照您想要的任何顺序访问它们以达到相同的效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 2021-05-26
      • 2020-12-26
      • 2011-05-20
      • 1970-01-01
      相关资源
      最近更新 更多