Как правильно сообщать о пользовательских исключениях при декодировании DataTable в _Cucumber_?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно сообщать о пользовательских исключениях при декодировании DataTable в _Cucumber_?

Сообщение Anonymous »

Я использую Cucumber 7.18 с Java 21. Мой инженер по тестированию достаточно любезен, чтобы писать сценарии тестирования. Я возвращаюсь, я хочу, чтобы сообщения об ошибках были как можно более читабельными.
У меня проблемы с отображением сообщения об ошибке, когда оно происходит в преобразованиях DataTable.
Например, предположим, что тест содержит приведенную ниже таблицу. В столбце CODE есть ошибка в строке номер 3, поскольку это всегда должны быть целые числа:

Код: Выделить всё

    Given My system produces the following entries:
| NAME     | ORC |          CODE | EPT | EFL | TIME   |
| AFR89YB  | A   |          4455 | DEP | 100 | -00:10 |
| AFR89YC  | B   |          4455 | DEP | 100 | -00:10 |
| AFR89YD  | C   | Illegal value | DEP | 100 | -00:10 |
| ...      | ... |           ... | ... | ... | ...    |
Чтобы декодировать таблицу, я регистрирую @DataTableType:

Код: Выделить всё

    @DataTableType
public MySystemEntry mySystemEntry(Map entry) {
return MySystemEntry.builder()
.entry(entry)
.build();
}
И в конструкторе у меня есть множество правил проверки, например:

Код: Выделить всё

public class MySystemEntry {
...
public static Builder builder() {
return new Builder();
}

...
public static Builder {
...
public Builder entry(Map entry) {
...
...
String value = entry.get("CODE");
if (notANumber(value)) {
throw new IllegalArgumentException("Value " + value + " is illegal for Column 'CODE'.");
}
...
}
...
}
}
Когда значения верны, все хорошо. Когда значения неверны, я могу увидеть срабатывание моего специального исключения, установив точку останова в вызове нового исключения IllegalArgumentException. На более высоком уровне в стеке вызовов оно становится InvoctionTargetException, сохраняя при этом причину. На более высоком уровне оно становится CucumberInvoctionTargetException, но причина помещается в специальное свойство invoctionTargetException. Наконец, оно становится CucumberDataTableException, а специальное свойство invoctionTargetException игнорируется (и, следовательно, теряется).
Как и ожидалось, тест не пройден. Моя проблема в том, что журнал ошибок совершенно бесполезен, поскольку в нем не отображается подробное сообщение об ошибке, созданное специально для меня:

Код: Выделить всё

Step failed
io.cucumber.datatable.CucumberDataTableException: 'java.util.List' could not transform
| NAME     | ORC |          CODE | EPT | EFL | TIME   |
| AFR89YB  | A   |          4455 | DEP | 100 | -00:10 |
| AFR89YC  | B   |          4455 | DEP | 100 | -00:10 |
| AFR89YD  | C   | Illegal value | DEP | 100 | -00:10 |
| ...      | ... |           ... | ... | ... | ...    |

at io.cucumber.datatable.DataTableType.transform(DataTableType.java:158)
...
...
at ✽.Given My system produces the following entries: (file:///D:/dev/java/my-application/src/test/resources/features/my-system-works.feature:26)
Caused by: io.cucumber.core.backend.CucumberInvocationTargetException
at io.cucumber.java.Invoker.doInvoke(Invoker.java:73)
...
...
Меня это немного раздражает — если я не вижу проблемы, я устанавливаю точку останова и точно определяю, что не так. Но мой инженер-испытатель совершенно растерялся из-за сообщения об ошибке. Ему приходится проверять каждое значение в каждом столбце и строке, пока не обнаружит несоответствие.
Как правильно сообщать о пользовательских исключениях, возникающих при декодировании DataTable в Огурец?

Подробнее здесь: https://stackoverflow.com/questions/792 ... n-decoding
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как правильно сообщать о пользовательских исключениях при декодировании DataTable в _Cucumber_?
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как правильно сообщать о пользовательских исключениях при декодировании DataTable в _Cucumber_?
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • @Runwith (cucumber.class) ошибка. Импорт Cucumber.api.junit.cucumber; не может быть решено
    Anonymous » » в форуме JAVA
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • @Runwith (cucumber.class) ошибка. Импорт Cucumber.api.junit.cucumber; не может быть решено
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • @Runwith (cucumber.class) ошибка. Импорт Cucumber.api.junit.cucumber; не может быть решено
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»