我的情况如下:
Scenario: do something interesting
Given the following users
| first_name | last_name | address |
| John | Doe | add1 |
| Jane | Doe | add2 |
如何从 first_name 列中提取元素列表,例如:
我尝试使用 cucumber.api.DataTable ,但看起来它用于其他用途。
我只能提取行,然后根据需要进行管理。
答案 0 :(得分:3)
我认为最可读的选项是asMaps
方法,这样你就可以独立于列的排序:
@Given("^the following users$")
public void the_following_users(DataTable table) {
for (Map<String, String> row : table.asMaps(String.class, String.class)) {
System.out.println(row.get("first_name"));
}
}
提取DataTable
的单个列不是其api的一部分,因此您必须自己在java中实现它。
答案 1 :(得分:0)
我猜你只想要一个List,但由于你正在使用原始的jdbc调用,你仍然需要遍历ResultSet。您需要将查询设计为仅返回一列,然后将每个单项行提取到结果列表对象中。
现在如果您使用的是JPA,您可以通过制作查询来将结果提取到List中,只返回一列,JPA会自动将其解包到List(或其他类型的List中,如Date或Integer)。 / p>
答案 2 :(得分:0)
请尝试使用此代码,它将为您提供“first_name”列下的值。如果您有多行,则在循环中使用此代码
`@Given("^the following users$")
public void the_following_users(DataTable records)
{
for (Map<String, String> row : records.asMaps(String.class, String.class))
{
System.out.println(row.get("first_name").intern());
}
}`