У меня проблемы с отображением сообщения об ошибке, когда оно происходит в преобразованиях 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
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'.");
}
...
}
...
}
}
Как и ожидалось, тест не пройден. Моя проблема в том, что журнал ошибок совершенно бесполезен, поскольку в нем не отображается подробное сообщение об ошибке, созданное специально для меня:
Код: Выделить всё
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