黄瓜数据表到地图的转换

Neh*_*eha 5 cucumber-java

我正在使用黄瓜数据表。我想将此数据表转换为Map而不是列表。因此,基本上,如果我将“标题行”用作键并将数据行用作键的值,该怎么办。我应该怎么做?

让我分享一个例子来更清楚。

鉴于以下动物:

  | Type  | BabyAnimal |    
  | cow   | Calf       |
  | horse | Pony       |
  | sheep | Lamb       |
Run Code Online (Sandbox Code Playgroud)

与其创建一个List<List<String>>here,不如创建一个List<Map<String,String>>here。地图的键应包含“类型”和“ BabyAnimal”,值应包含相应的值。因此,地图实体为:

<Type,cow>,<BabyAnimal,Calf>
<Type,horse>,<BabyAnimal,Pony>
<Type,sheep>,<BabyAnimal,Lamb>
Run Code Online (Sandbox Code Playgroud)

我们将如何做?我觉得这是一种更好的方法,因为我们正在从密钥中获取数据。例如List(1).Map.get(Type) ,在List的情况下,我们必须执行get(0),get(1),并且有使用不正确数据的机会。

mpk*_*nje 5

并添加第二个答案,因为问题中的通用类型被 html 咀嚼了。

给定以下动物:

| Type  | BabyAnimal |    
| cow   | Calf       |
| horse | Pony       |
| sheep | Lamb       |
Run Code Online (Sandbox Code Playgroud)

假设您希望这是您的步骤定义:

@Given("all baby animal details")
public void allMapDetails(List<Map<String, String>> animals) {
    System.out.println(animals);
}
Run Code Online (Sandbox Code Playgroud)

然后该表将自动转换为字符串到字符串的映射列表。


Mar*_*rit 1

您可以在 GitHub 上的 cucumber-jvm 项目中找到以下 DataTable 提示:

\n\n
        "    // For automatic transformation, change DataTable to one of\\n" +\n        "    // E, List<E>, List<List<E>>, List<Map<K,V>>, Map<K,V> or\\n" +\n        "    // Map<K, List<V>>. E,K,V must be a String, Integer, Float,\\n" +\n        "    // Double, Byte, Short, Long, BigInteger or BigDecimal.\\n" +\n        "    //\\n" +\n        "    // For other transformations you can register a DataTableType.\\n";\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以在Cucumber 文档中找到如何操作:

\n\n

将列表传递给步骤定义的最简单方法是使用数据表:

\n\n
Given the following animals:\n  | cow   |\n  | horse |\n  | sheep |\n
Run Code Online (Sandbox Code Playgroud)\n\n

将参数声明为 List,但不要在表达式中定义任何捕获组:

\n\n
@Given("the following animals:")\npublic void the_following_animals(List<String> animals) {\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在您的情况下,替换ListMap.

\n

  • 在 v3 中,这确实需要有一个可以创建“Type”和“BabyAnimal”的“TableEntryTransformer”。如果左上角的单元格留空,则“TableCellTransformer”也可用于“Type”。 (2认同)

归档时间:

查看次数:

5460 次

最近记录:

7 年,10 月 前