Огурец: невозможно преобразовать DataTable в список <java .lang.String>. Был преобразователь ячейки таблицы, но таблица была слишком широка, чтобы использовать это - PullRequest
3 голосов
/ 13 марта 2020

Файл функции:

Scenario: Login to application
Given I open my application
And I login with following credentials 
| admin | pass1234 |

StepDefs:

@When("^I login with following credentials$")
public void i_login_with_following_credentials(DataTable dt) {
    List<String> list = dt.asList(String.class);
    System.out.println("Username - " + list.get(0));
    System.out.println("Password - " + list.get(1));
}

Ошибка:

io.cucumber.datatable.UndefinedDataTableTypeException: Can't convert DataTable to List<java.lang.String>.
There was a table cell converter but the table was too wide to use it.
Please reduce the table width or register a TableEntryTransformer or TableRowTransformer for java.lang.String.

<cucumber.version>5.4.1</cucumber.version>
<junit.version>4.13</junit.version>

Не могли бы вы дать совет? Что именно следует добавить? Спасибо.

Ответы [ 2 ]

2 голосов
/ 14 марта 2020

Вы пытаетесь превратить таблицу данных в список строк. Поскольку списки являются вертикальными и поскольку String может занимать ровно одну ячейку, Cucumber ожидает, что у вас есть таблица, в которой ровно один столбец.

| admin    |
| pass1234 | 

Но вы также можете транспонировать таблицу данных:

List<String> list = dt.transpose().asList(String.class)

Или просто получить доступ к ячейкам напрямую:

String username = dt.cell(0,0);
String password = dt.cell(0,1);
1 голос
/ 16 марта 2020

Просто используйте:

List<String> userAndPassword = db.row(0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...