将空字符串传递给黄瓜数据表

mak*_*aki 2 java datatable cucumber

我正在将我的 Cucumber 版本从旧的 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 |        |
Run Code Online (Sandbox Code Playgroud)
  Scenario: Testing datatable with empty string
    When Passing empty string as second parameter
      | first  | second |
      | simple |        |
Run Code Online (Sandbox Code Playgroud)

mpk*_*nje 8

由于 v5.0.0 数据表中的空单元格变为空值而不是空字符串。通过replaceWithEmptyString = "[blank]"在数据表类型上使用,可以显式插入空字符串。

这可以实现以下功能:

Feature: Whitespace
  Scenario: Whitespace in a table
   Given a blank value
     | key | value   |
     | a   | [blank] |

Run Code Online (Sandbox Code Playgroud)
Feature: Whitespace
  Scenario: Whitespace in a table
   Given a blank value
     | key | value   |
     | a   | [blank] |

Run Code Online (Sandbox Code Playgroud)

请注意,您不需要使用

@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;
}
Run Code Online (Sandbox Code Playgroud)

您可以使用:

List<Map<String, String>> maps = dataTable.asMaps(String.class, String.class);
Run Code Online (Sandbox Code Playgroud)

另见:https : //github.com/cucumber/cucumber-jvm/blob/main/release-notes/v5.1.0-v5.7.0.md#v520-redefine-build-in-data-table-types