将空字符串传递给 Cucumber DataTable
Pass empty string to cucumber DataTable
我正在将我的黄瓜版本从旧的 info.cukes 更新到最新的 io.cucumber (v6.8.1),我的一些测试由于变压器行为的变化而失败。
过去可以传递空字符串,但现在它们被转换为 null
。如何将空字符串传递给 DataTable 参数?
Scenario: Testing datatable with empty string
When Passing empty string as second parameter
| first | second |
| simple | |
@When("Passing empty string as second parameter")
public void test_definition(DataTable dataTable) {
List<Map<String, String>> maps = dataTable.asMaps(String.class, String.class);
System.out.println(maps);
// this results in [{first=simple, second=null}]
// is there a way to pass empty string and achieve [{first=simple, second=}]?
}
自 v5.0.0 以来,数据 table 中的空单元格变成空值而不是空字符串。通过在数据 table 类型上使用 replaceWithEmptyString = "[blank]"
,可以显式插入空字符串。
这会启用以下功能:
Feature: Whitespace
Scenario: Whitespace in a table
Given a blank value
| key | value |
| a | [blank] |
@given("A blank value")
public void givenABlankValue(Map<String, String> map){
// map contains { "key":"a", "value": ""}
}
@DataTableType(replaceWithEmptyString = "[blank]")
public String stringType(String cell) {
return cell;
}
请注意,您不需要使用
List<Map<String, String>> maps = dataTable.asMaps(String.class, String.class);
您可以使用:
public void test_definition(List<Map<String, String>> maps) {
我也面临着类似的问题,并且有太多的场景无法在多个地方进行这些更改。所以我选择了以下更改以使其像以前一样工作:
@DataTableType
public String nullToString(String cell) {
return Objects.isNull(cell) ? StringUtils.EMPTY : cell;
}
我正在将我的黄瓜版本从旧的 info.cukes 更新到最新的 io.cucumber (v6.8.1),我的一些测试由于变压器行为的变化而失败。
过去可以传递空字符串,但现在它们被转换为 null
。如何将空字符串传递给 DataTable 参数?
Scenario: Testing datatable with empty string
When Passing empty string as second parameter
| first | second |
| simple | |
@When("Passing empty string as second parameter")
public void test_definition(DataTable dataTable) {
List<Map<String, String>> maps = dataTable.asMaps(String.class, String.class);
System.out.println(maps);
// this results in [{first=simple, second=null}]
// is there a way to pass empty string and achieve [{first=simple, second=}]?
}
自 v5.0.0 以来,数据 table 中的空单元格变成空值而不是空字符串。通过在数据 table 类型上使用 replaceWithEmptyString = "[blank]"
,可以显式插入空字符串。
这会启用以下功能:
Feature: Whitespace
Scenario: Whitespace in a table
Given a blank value
| key | value |
| a | [blank] |
@given("A blank value")
public void givenABlankValue(Map<String, String> map){
// map contains { "key":"a", "value": ""}
}
@DataTableType(replaceWithEmptyString = "[blank]")
public String stringType(String cell) {
return cell;
}
请注意,您不需要使用
List<Map<String, String>> maps = dataTable.asMaps(String.class, String.class);
您可以使用:
public void test_definition(List<Map<String, String>> maps) {
我也面临着类似的问题,并且有太多的场景无法在多个地方进行这些更改。所以我选择了以下更改以使其像以前一样工作:
@DataTableType
public String nullToString(String cell) {
return Objects.isNull(cell) ? StringUtils.EMPTY : cell;
}